使用三元运算符进行方法调用的伦理和可读性

Ethics and readability of using ternary operator for method calls

三元运算符的标准用法是,即:

a = 1 if some_condition else 2

就在今天,我意识到这样的事情是完全合法的:

do_something() if some_condition else do_something_else()

例如:

print(1) if a == 1 else print(2)

而不是:

if a == 1:
    print(1)
else:
    print(2)

在我看来,这更紧凑、更易读且更漂亮。我看到从这种类型的表达式中获取 return 值会更难(也许方法是将所有内容都放在括号中)。你怎么看?

P.S。我知道这不是典型的问答内容,但我什至从未见过提到三元运算符的这种用法,我认为它明显改进了 Python 编码的某些方面。

只为 side-effects 使用三元运算符非常令人困惑。该表达式应该 return 某些东西(让我想起了 Is it Pythonic to use list comprehensions for just side effects?:答案是 no

你可以重写:

print(1) if a == 1 else print(2)

喜欢:

print(1 if a == 1 else 2)

或重写:

do_something() if some_condition else do_something_else()

至:

(do_something if some_condition else do_something_else)()

所以三元表达式 returns 被 side-effect 表达式使用的东西。