没有办法做到这一点,这是故意的。三元 if 只应该用于琐碎的情况。
如果你想使用两次计算的结果,把它放在一个临时变量中:
value = info.findNext("b")
value = value if value else "Oompa Loompa"
一旦你这样做了,很明显你在做一些愚蠢的事情,实际上写这个的pythonic方式是:
value = info.findNext("b")
if not value:
value = "Oompa Loompa"
这实际上比您最初的尝试少了 5次击键。
如果你真的想保存击键,你可以这样做:
value = info.findNext("b") or "Oompa Loompa"
但许多风格指南和 BDFL 都不鼓励这样做。
如果你只这样做一次,最好更明确一点。如果你这样做了六次,就像所有那些内置和 stdlib 函数一样,findNext
使用可选的默认值 return 而不是更好:None
def findNext(self, needle, defvalue=None):
# same code as before, but instead of return None or falling off the end,
# just return defvalue.
然后你可以这样做:
value = info.findNext("b", "Oompa Loompa")