【问题标题】:Why can't we use "pass" in a ternary statement?为什么我们不能在三元语句中使用“pass”?
【发布时间】:2020-12-28 10:38:15
【问题描述】:

下面是一些我认为我会逃脱的简单的事情:

foo = True
print('bar') if foo else pass

产生:

SyntaxError: invalid syntax

当然,我可以将pass 替换为None,这样就可以了。我只是好奇:为什么不通过工作?

【问题讨论】:

  • 这不是三元语句。这是一个三元表达式。它在 表达式(不是语句)和 pass 不是表达式之间进行选择。
  • pass 不是变量,而是语句。您不能在 if-else 表达式中使用任何语句。您只能使用表达式。在 Python 3 中,print 是一个函数,调用它是一个表达式。
  • 使用三元语句在两个不同的值之间进行选择,而不是动作。

标签: python python-3.x conditional-operator


【解决方案1】:

您可以在一行中执行此操作,因为 else 什么都不做,不需要 else 块。

foo = True
if foo : print('bar') 

【讨论】:

    【解决方案2】:

    pass 是语句而不是表达式。

    表达式几乎可以在任何地方使用。

    大多数语句都有其特殊的语法,通常单独一行。

    有关两者区别的更多信息,请参阅this answer

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 2019-06-18
      相关资源
      最近更新 更多