我正在尝试使用 if-else 表达式,如果 if
条件失败,它应该会中断循环,但会收到 invalid syntax
错误。
示例代码:
a = 5
while True:
print(a) if a > 0 else break
a-=1
当然,如果我以传统方式书写(不使用单行),它会起作用。
在 else
关键字后使用 break
命令有什么问题?
最佳答案
如果我运行它,我会收到以下错误:
... print(a) if a > 0 else break
File "<stdin>", line 2
print(a) if a > 0 else break
^
SyntaxError: invalid syntax
这是因为
print(a) if a > 5 else break
是一个三元运算符。三元运算符不是if
语句。这些使用语法:
<expr1> if <expr2> else <expr3>
它等价于一个“虚函数”:
def f():
if <expr2>:
return <expr1>
else:
return <expr3>
所以这意味着 else
旁边的部分应该是一个表达式。 break
不是表达式,它是一个语句。所以 Python 不期望那样。您不能返回
break
。
在python-2.x , print
也不是函数。所以这会导致 print
语句出错。在 python-2.x print
是一个关键字。
您可以将代码重写为:
a = 5
while True:
if a > 5:
print(a)
else:
break
a -= 1
您可以在 documentation 中阅读更多相关信息和 PEP-308 .
关于python - 为什么 "if-else-break"在 python 中中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848883/