使用三元运算符进行方法调用的道德规范和可读性

时间:2018-03-23 13:26:45

标签: python ternary-operator

三元运算符的标准用途是:

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编码的某些方面。

1 个答案:

答案 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)()

所以三元表达式返回副作用表达式使用的东西。