在javascript中,foo = x || "default"
经常被编码。如果x = null
,foo = "default"
。
在python中,foo = x or "default"
是否正确?
答案 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