Python中相当于Perl的"do this or that, or die"的用法是什么?

6 投票
4 回答
1647 浏览
提问于 2025-04-17 03:05

在Perl中,常常会写类似于function() || alternative()这样的代码。如果第一个函数返回的是假值(也就是失败),那么就会执行第二个函数。

那么在Python中,怎么简单地实现这个功能呢?

更新

下面是一些示例(伪代码):

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

如果可能的话,这些解决方案应该适用于Python 2.5及以上版本。

注意:这里有一个隐含的假设,就是你不能修改func()函数让它抛出异常,也不能写包装函数。

4 个回答

1
function() or alternative()

这个机制是完全一样的。

2

你可以使用 or

function() or alternative()

另外,还有一种条件表达式,它在 PEP 308 中有定义:

x = 5 if condition() else 0

这种写法在某些情况下很有用,而且读起来更容易理解。

5

使用 or:在Python中,对于布尔表达式,它会使用一种叫做短路求值的方式。

function() or alternative()

如果 function 返回的是 True,那么这个表达式的最终结果就已经确定了,alternative 就根本不会被计算。

撰写回答