我们知道,python中默认的三元运算形式如下:
a if condition else b
其中a和b可以是函数,根据condition是True还是False,该表达式最终返回a或b的值
这里该表达式是具有短路性质的,即无论condition是True还是False,a和b其中只有一个会被执行:
def truevalue():
print("Exec truevalue()")
return "I am True"
def falsevalue():
print("Execute falsevalue()")
return "I am False"
if __name__ == "__main__":
result = truevalue() if True else false()
print(result)
"""
输出结果:
Exec truevalue()
I am True
"""
那如何实现一个不短路的三元运算符呢?即无论条件表达式的结果是True还是False,我们希望a、b两个函数都能被执行,但只会取其中一个的结果
这里可以利用元组下标来实现,形如
(falsevalue, truevalue)[condition]
def truevalue():
print("Exec truevalue()")
return "I am True"
def falsevalue():
print("Execute falsevalue()")
return "I am False"
if __name__ == "__main__":
result = (falsevalue(), truevalue())[True]
print(result)
"""
输出结果:
Execute falsevalue()
Exec truevalue()
I am True
"""