Python等效于省略三元运算符的第二部分(a if a else b)
Posted
技术标签:
【中文标题】Python等效于省略三元运算符的第二部分(a if a else b)【英文标题】:Python equivalent of omitting second part of ternary operator (a if a else b) 【发布时间】:2020-08-28 18:16:12 【问题描述】:在某些语言(我认为是 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 中有没有简单的方法来做到这一点?或者这是不可能的?
【问题讨论】:
“当然,我可以将 myFunc() 分配给一个变量并在三元运算符中使用该变量两次,但这会使它再次变大。”所以呢?只需将其分配给一个变量。 【参考方案1】:您可以在此处使用or
,因为空字符串的计算结果为 Falsey:
result = myFunc() or False
参考Truth Value Testing
【讨论】:
我测试过,这正是我想要的!我不明白为什么这行得通?结果不应该是 True 而不是返回字符串的值,因为非空字符串将评估为 True ,这将使语句:result = True or False
这将是 True?
这是一个条件语句。它检查左侧参数的真值,如果为真,则返回其值,否则返回右侧的值。有关更多信息,请参阅PEP-0308。以上是关于Python等效于省略三元运算符的第二部分(a if a else b)的主要内容,如果未能解决你的问题,请参考以下文章