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