C#条件运算符?的python对应版本

Python version of C#'s conditional operator (?)

我看到这个问题,但它使用了??运算符作为空检查,我想将其用作布尔真/假测试。

我用python编写了以下代码:

1
2
3
4
if self.trait == self.spouse.trait:
    trait = self.trait
else:
    trait = defualtTrait

在C中,我可以这样写:

1
trait = this.trait == this.spouse.trait ? this.trait : defualtTrait;

在Python中有类似的方法吗?


是的,你可以写:

1
trait = self.trait if self.trait == self.spouse.trait else defaultTrait

这在Python中称为条件表达式。


对于C中的空合并运算符,您在问题中使用的不是正确的用法。这将在编译时失败。

在c中,正确的书写方法是:

1
trait = this.trait == this.spouse.trait ? self.trait : defaultTrait

C中的空合并返回值链中不为空的第一个值(如果没有非空值,则返回空)。例如,如果所有其他属性都为空,那么您在C中编写的返回第一个非空特性或默认特性的代码实际上是:

1
trait = this.spouse.trait ?? self.trait ?? defaultTrait;