三元运算符的标准用途是:
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)
在我看来,这更紧凑,更易读,更漂亮。我发现从这种类型的表达式中获取返回值会更难(也许是将所有内容包装在括号中)。你觉得怎么样?
P.S。我知道它不是典型的Q& A内容,但我从未见过这种使用过的三元运算符,我认为它显然改进了Python编码的某些方面。
答案 0 :(得分:4)
使用三元运算符只是因为副作用很混乱。该表达式应该返回某些东西(让我想起Is it Pythonic to use list comprehensions for just side effects?:答案是否)
你可以改写:
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)()
所以三元表达式返回副作用表达式使用的东西。