首页 > 解决方案 > Python等效于省略三元运算符的第二部分(a if a else b)

问题描述

在某些语言中(我认为是 php 和 Java),您可以省略三元运算符的第二部分,如下所示:

a = "This is a string"
result = a ? : False

以上应该等价于

a = "This is a string"
result = a ? a : False

我想在以下(简化的)python代码中缩短三元运算符:

def myFunc():
   return "This string could be empty, but now it's not."

result = myFunc() if myFunc() else False
print(result)

如果它不为空,这将打印字符串,但当它为空时打印 False。

我希望它更短的原因是因为现在我必须调用 myFunc() 两次而不是一次,如果你能够像其他语言一样省略其中一个。

当然,我可以将 myFunc() 分配给一个变量并在三元运算符中使用该变量两次,但这会使它再次变大。

在python中有没有简单的方法来做到这一点?或者这是不可能的?

标签: pythonpython-3.xconditional-operator

解决方案


您可以or在此处将空字符串用作 Falsey 值:

result = myFunc() or False

参考真值测试


推荐阅读