Python有Elvis运算符吗?

Cor*_*ein 9 python conditional-operator

许多语言的三元运算符都是这样的:

x = f() ? f() : g()
Run Code Online (Sandbox Code Playgroud)

其中if f()为truthy则x赋值为f(),否则赋值为g().但是,某些语言有一个更简洁的elvis运算符,它在功能上是等价的:

x = f() ?: g()
Run Code Online (Sandbox Code Playgroud)

在python中,三元运算符表达如下:

x = f() if f() else g()
Run Code Online (Sandbox Code Playgroud)

但是python有更简洁的elvis操作符吗?

也许是这样的:

x = f() else g() # Not actually valid python
Run Code Online (Sandbox Code Playgroud)

Rob*_*obᵩ 22

Python确实有elvis运算符.它是条件or运算符:

x = f() or g()
Run Code Online (Sandbox Code Playgroud)

f()被评估.如果真实,则为x赋值f(),否则为x赋值g().

参考:https://en.wikipedia.org/wiki/Elvis_operator#Analogous_use_of_the_OR_operator

  • 如果您将“?:”解释为一个笑脸,问号的卷曲类似于猫王的象征性发型。 (6认同)

Ale*_*sky 14

注意Python 没有由以下定义的空合并运算符:

a if a is not None else b
Run Code Online (Sandbox Code Playgroud)

操作ora or b检查其真实性aFalse何时a==0len(a)==0或其他类似情况。看看什么是真值和假值

有提议添加此类运营商PEP 505