Skip to main content
 首页 » 编程设计

python之在 Python 2.5 中执行三元条件的最佳方法

2025年05月04日8zhwl

我必须忍受 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