在红宝石中,我可以这样做:
1.9.3-p448 :001 > a = 1 || 2
=> 1
1.9.3-p448 :004 > a = nil || 2
=> 2
1.9.3-p448 :005 > a = 1 || nil
=> 1
Python中是否有类似的单行内容?
答案 0 :(得分:4)
只需使用or
运算符即可。从链接页面:
x或y :如果x为false,则为y,否则为x
示例:
In [1]: 1 or 2
Out[1]: 1
In [2]: None or 2
Out[2]: 2
In [3]: 1 or None
Out[3]: 1
答案 1 :(得分:4)
Python的or
运算符几乎相当于Ruby的||
- 而None
可以在Python中使用,与{{1}类似在Ruby中。
所以,例如,
nil
会将a = None or 2
设置为a
。
你也可以使用更丰富的三元"运算符2
- something if condition else somethingelse
与a or b
相同 - 但显然a if a else b
更简洁易读,而您想要做的就是它支持的语义。
答案 2 :(得分:1)
不要忘记现代的if-else语法:
x = a if a is not None else 999
(或您需要的任何条件)。这使您可以测试非None,并且不容易出现空列表和类似问题。
一般语法是
ValueToBeUsedIfConditionIsTrue if Condition else ValueToBeUsedIfConditionIsFalse