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

标签 python python-2.5 ternary

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

相关文章:

python - 意外 'reflowed' ,如何撤消长换行符?

python - 具有均匀间隔颜色的颜色条的不均匀(不规则)间隔数据

java - 被 += 覆盖的函数增量

python - 如何将两个二进制数合并为一个三进制数

python - 声明 numpy 矩阵的简洁方法

python - OpenCV Python,为什么 Hough Circle Transform 找不到所有圆圈?

SQLite 完整性错误 : UNIQUE constraint failed:

python - 如何装饰类(class)?

python - 通过字符串调用方法

css - React - 使用三元在功能组件中应用 CSS 类