Python 相当于省略三元运算符的第二部分 (a if a else b)
Python equivalent of omitting second part of ternary operator (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 中有没有简单的方法可以做到这一点?或者这是不可能的?
您可以在此处使用 or
,因为空字符串计算为 Falsey 值:
result = myFunc() or False
在某些语言中(我认为 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 中有没有简单的方法可以做到这一点?或者这是不可能的?
您可以在此处使用 or
,因为空字符串计算为 Falsey 值:
result = myFunc() or False