在Perl中,做function() || alternative()
之类的事情很常见。如果第一个返回false,它将运行第二个。
如何在Python中轻松实现?
更新
示例(伪代码):
x = func() or raise exeption
x = func() or print(x)
func() or print something
如果可能的解决方案应该适用于Python 2.5 +
注意:有一个隐含的假设是你不能修改func()来引发异常,也不能编写包装器。
答案 0 :(得分:5)
使用or
:Python使用short circuit evaluation作为布尔表达式:
function() or alternative()
如果function
返回True,则确定此表达式的最终值
alternative
根本没有评估。
答案 1 :(得分:2)
您可以使用or
:
function() or alternative()
此外,还有PEP 308中定义的条件表达式:
x = 5 if condition() else 0
这在表达式中有时很有用,而且更具可读性。
答案 2 :(得分:1)
function() or alternative()
机制完全相同。
答案 3 :(得分:1)
尝试使用or
:
>>> def bye():
return 3
>>> print bye() or 342432
3
不幸的是,这在Perl中不起作用,因为在Perl中,在my $c = $d || 45;
之类的作业之后,如果$c
未定义,则$d
中的值为45。在Python中,您会收到错误NameError: name 'd' is not defined