为这样的变量赋值是否被认为是错误的风格?
x = "foobar" or None
y = some_variable or None
在上面的例子中,x得到值'foobar'。
答案 0 :(得分:20)
不,这是一种常见做法。对于比你长得多的表达式,它只被认为是糟糕的风格。
答案 1 :(得分:15)
执行此类操作的主要危险是(在第二种情况下)some_variable
为False但不是None(例如,整数0
)并且您不希望在这种情况下,最终y
等于无。
答案 2 :(得分:4)
使用这种表达方式我也感到有点不自在。在学习Python 4ed中,它被称为“有点不寻常的行为”。 后来Mark Lutz说:
...事实证明,它是Python中一种相当常见的编码范式:to 从固定大小的集合中选择一个非空对象,只需字符串 他们在一起或表达。在更简单的形式,这也是 通常用于指定默认值...
实际上,它们会生成简洁的单行表达式,有助于消除代码中的线路噪声 此行为是if / else三元运算符形式的基础:
A = Y if X else Z
答案 3 :(得分:2)
OP 的语法非常好。
“用或赋值”的官方名称是空合并,现在实际上有一个关于它的维基百科页面! https://en.wikipedia.org/wiki/Null_coalescing_operator
这个问题也可能有用:
Is there a Python equivalent of the C# null-coalescing operator?