为什么不用if其他简写与break一起工作 - Python

时间:2016-02-01 04:52:21

标签: python python-2.7 if-statement

当条件匹配时,我一直试图摆脱循环。我试过下面的单行:

break if a is not None else time.sleep(1)

和这个

a is not None and break
time.sleep(1)

两者都不起作用&投掷SyntaxError而直接向前工作正常。

if a is not None:
    break
time.sleep(1)

虽然我这样使用它没有问题,但我只是想知道为什么上面的语法是错误的。

2 个答案:

答案 0 :(得分:5)

表达式表达式 if 表达式 else 表达式是一个三元运算符。表达式被评估。 break是一个声明。它没有被评估,它被执行了。您收到语法错误,因为语法不正确。

正如@hugo Rivera所说,"所有表达都是陈述,但并非所有陈述都是表达。"

答案 1 :(得分:2)

所有表达式都是语句,但并非所有语句都是表达式。

三元运算符X if B else Y仅接受表达式XBY,但break是一个语句,不能用作表达式。

同样,您可以在三元运算符中returnimport,指定等等。请参阅第二个链接以获取完整的陈述列表。