使用三元运算符进行方法调用的伦理和可读性
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 表达式使用的东西。
三元运算符的标准用法是,即:
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 表达式使用的东西。