7

在 Perl 中,做类似function() || alternative(). 如果第一个返回 false,它将运行第二个。

这如何在 Python 中轻松实现?

更新

示例(伪代码):

x = func() or raise exeption
x = func() or print(x)
func() or print something

如果可能的解决方案应该适用于 Python 2.5+

注意:有一个隐含的假设,即您不能修改 func() 以引发异常,也不能编写包装器。

4

4 回答 4

5

用途or:Python对布尔表达式使用短路求值:

function() or alternative()

如果function返回 True,则该表达式的最终值已确定并且 alternative根本不计算。

于 2011-09-26T09:14:23.597 回答
2

你可以使用or

function() or alternative()

此外, PEP 308中定义了条件表达式:

x = 5 if condition() else 0

这有时在表达式中很有用并且更具可读性。

于 2011-09-26T09:13:55.833 回答
1
function() or alternative()

机制完全相同。

于 2011-09-26T09:13:41.103 回答
1

尝试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

于 2011-09-26T09:17:54.913 回答