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; |