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