在Python中,'foo = x或“default”'是否正确?

时间:2015-09-13 13:26:11

标签: python

在javascript中,foo = x || "default"经常被编码。如果x = nullfoo = "default"

在python中,foo = x or "default"是否正确?

3 个答案:

答案 0 :(得分:2)

您编写的代码会产生您描述的行为,但我会建议以下内容,即&&&

>>> x = None
>>> foo = x if x else 'default'
>>> foo
'default'

如果你熟悉C ++,你可以阅读上面的内容,好像它是下面的三元表达式

foo = x ? x : "default";

答案 1 :(得分:2)

这是'正确'/有效的代码(只要定义了x),但请注意,foo将设置为"default"以用于任何虚假值,例如{ {1}},0""[]

如果您只想在{}不是x时使用默认值,则可以使用: None

这在下面说明。

foo = x if x is not None else "default"

如果您要定义一个函数,您可能只想使用默认参数。

再次,如下所示:

x = 0
print(x if x is not None else "default")  # prints 0
print(x or "default")  # prints default

答案 2 :(得分:0)

如果已定义x,则代码可以正常工作,否则您将收到错误。

正确使用:

 >>> x= None
 >>> foo = x or "default"
 >>> foo
 'default'

错误案例:

>>> foo = x or "default"

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    foo = x or "default"
NameError: name 'x' is not defined