python - 为什么内联 IF 赋值需要 else 语句?

标签 python

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/

相关文章:

python - 为我的程序在 Python 中将 int 转换为枚举?

python - 查找两个字典的匹配键值对

python - 为什么要避免 exec() 和 eval()?

python - 防止在 Python 构造函数中创建对象

python - 取消已挂起的 ProcessPoolExecutor future

Python 多处理工具 vs Py(Spark)

python - For 循环遍历 Python 中文本文件的重复部分

python - 如何使用urllib3下载服务器SSL证书?

python - 为什么从生成器对象创建列表需要这么长时间?

python - 在python中合并具有不同长度和列的数据帧列表