Python有Elvis操作符吗?

Python有Elvis操作符吗?,python,conditional-operator,Python,Conditional Operator,许多语言中的三元运算符的工作原理如下: x = f() ? f() : g() 如果f()为真,则x被分配f()的值,否则被分配g()的值。但是,有些语言在功能上更简洁: x = f() ?: g() 在python中,三元运算符的表达方式如下: x = f() if f() else g() 但是python有更简洁的elvis操作符吗 可能是这样的: x = f() else g() # Not actually valid python 对 Python确实有elvis操作符。它是

许多语言中的三元运算符的工作原理如下:

x = f() ? f() : g()
如果
f()
为真,则
x
被分配
f()
的值,否则被分配
g()
的值。但是,有些语言在功能上更简洁:

x = f() ?: g()
在python中,三元运算符的表达方式如下:

x = f() if f() else g()
但是python有更简洁的elvis操作符吗

可能是这样的:

x = f() else g() # Not actually valid python
对 Python确实有elvis操作符。它是有条件的
运算符:

x = f() or g()
将计算
f()
。如果为truthy,则为x赋值为
f()
,否则为x赋值为
g()

参考:

Java等价物是

test ? testIsTrue:testIsFalse

NBPython的not合并运算符的定义如下:

a if a is not None else b
a==0
len(a)==0
或其他类似情况时,
a或
中的
运算符检查
a
的真实性,该值为
False
。看


有人建议增加这样的操作员

是的,我找不到任何提到“elvis操作员”的地方,但这在功能上是等效的。谢谢。我以前从未听说过“猫王操作员”。如果你把
?:
理解为一个笑脸,问号的卷曲就像猫王象征性的发型。取消重复关闭,因为这不是要求零合并行为。(同样,对于旧的dupe目标,公认的答案是容易出现错误并且非常糟糕。)这不是elvis操作员所做的。你想到的是三元运算符。OP特别问到检查
a
的真实性,而不是检查
a不是无的
@CrazyChucky-Hmm,我可能混淆了elvis运算符和空合并运算符之间的区别。然而,我将把这个答案留给其他可能有同样困惑的人。好的观点,我认为值得指出。也许特别提到Elvis和null合并运算符是相似的,但有这种区别吗?@CrazyChucky编辑。我要指出的是,一些语言,比如Kotlin,使用
?:
进行空合并,而Wikipedia实际上有两个行为的部分,在示例中也有“?”的条目。因此,这个术语并不明确。
test ? testIsTrue:testIsFalse
a if a is not None else b