我必须忍受 Python 版本 < 2.5(具体是 2.4.3)
似乎从 Python 2.5 开始就引入了三元运算符。对于那些不熟悉的人,Python >= 2.5 中的三元运算符看起来像这样:
def do_ternary(flag):
return "foo" if flag else "bar"
我想知道一些在 Python 的早期版本中模拟它的解决方案。我肯定可以用 if ... else 来做到这一点,但我正在寻找更像 pythonic 的东西,我不会因为使用一些生产级代码而感到羞耻:)
感谢您的帮助!
最佳答案
完成 if/else
所做的所有事情的正确方法是:
(condition and (yes_value,) or (no_value,))[0]
它既可以短路又可以解决 yes_value
本身为假的问题。显然,如果你有理由避免这种纠缠,那就去做吧;在您的示例中,两个条件都是常量表达式,因此您可以:
{True: yes_value, False: no_value}[bool(condition)]
或更简洁:
(no_value, yes_value)[condition]
如果您确实需要短路,但您确信 yes_value 永远不会是假的,您可以修剪元组:
condition and yes_value or no_value
但这可能仅在 yes_value
实际上是常量时才有效。如果这些都不适合您的口味或需要,只需使用带有中间变量的普通 if:
语句
if condition:
result = yes_value
else:
result = no_value
关于python - 在 Python < 2.5 中执行三元条件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158670/