x = 'foo' if x == 'bar' else x
现在这将等于:
x = 'foo' if x == 'bar'
但这会返回“无效语法”错误。是否有这样的工作原理或设计决策背后的原因是什么?因为它是多行 if 函数(函数如示例 #2):
if x == 'foo':
x = 'bar'
而且它工作得很好。
最佳答案
对于Python解释器来说,这行代码...
x = 'foo' if x == 'bar' else x
不是这样解释的......
(x = 'foo') if x == 'bar' else (x = x)
而是这样解释的:
x = ('foo' if x == 'bar' else x)
这是因为 Python 中的三元 x if cond else y
运算符是一个表达式 而不是一个语句 - 它可以在您指定值的任何地方使用。
因此,您也可以使用它,例如,在您不进行赋值的情况下:
print("hi" if x == 'bar' else "bye")
因为它是一个表达式,所以它总是需要能够解析为某个值,以便该值可以在使用该表达式的任何上下文中使用。
关于python - 为什么内联 IF 赋值需要 else 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27727048/