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

Python 使用三元运算符进行方法调用的道德规范和可读性,python,ternary-operator,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) 在我看来,这是更紧凑,可读性和美观。我发现从这种类型的表达式中获取返回

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

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)
在我看来,这是更紧凑,可读性和美观。我发现从这种类型的表达式中获取返回值会比较困难(可能方法是将所有内容都用括号括起来)。你觉得怎么样


另外,我知道这不是典型的问答内容,但我甚至从未见过提到的三元运算符的使用,而且我认为它明显改善了Python编码的某些方面。

仅为了副作用而使用三元运算符非常令人困惑。这个表达式应该返回一些东西(让我想起:答案是否定的)

你可以重写:

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

或重写:

do_something() if some_condition else do_something_else()
致:


因此,三元表达式返回副作用表达式所使用的内容。

我不会继续我的咆哮,但如果你查看通过三元表达式执行副作用的情况,你会看到许多例子,说明为什么它不是很好的实践。依我看,Python的三元代码比
更具可读性:变体,但它仍然不正确。我认为它显然不正确。这正是一个主要基于意见的答案的定义。问题是,IMHO,它太容易与
print(1)混淆;如果a==1,则打印(2)
,但没有提供多少好处。
do_something() if some_condition else do_something_else()
(do_something if some_condition else do_something_else)()