Python中C#条件运算符(?)的版本
我看到这个问题,但它使用??运算符来检查空值,我想用它来测试布尔值的真或假。
我在Python中有这段代码:
if self.trait == self.spouse.trait:
trait = self.trait
else:
trait = defualtTrait
在C#中我可以这样写:
trait = this.trait == this.spouse.trait ? this.trait : defualtTrait;
在Python中有没有类似的方法可以做到这一点?
2 个回答
1
关于C#中的空合并运算符,你提到的用法是不正确的。这种写法在编译时就会出错。
在C#中,正确的写法应该是这样的:
trait = this.trait == this.spouse.trait ? self.trait : defaultTrait
空合并运算符在C#中会返回一系列值中第一个不为null的值(如果所有值都是null,则返回null)。举个例子,如果你想在C#中返回第一个不为null的特性,或者在所有特性都是null的情况下返回一个默认特性,实际上应该这样写:
trait = this.spouse.trait ?? self.trait ?? defaultTrait;
15
是的,你可以这样写:
trait = self.trait if self.trait == self.spouse.trait else defaultTrait
这在Python中被称为条件表达式。