这个条件运算符是做啥的? [复制]

Posted

技术标签:

【中文标题】这个条件运算符是做啥的? [复制]【英文标题】:What does this conditional operator do? [duplicate]这个条件运算符是做什么的? [复制] 【发布时间】:2013-02-25 12:57:56 【问题描述】:

我不确定如何解释它们,我仍在努力找出它们到底在做什么..

color = self.color2

color = self.fill1 if color == self.fill2 else self.fill2

这到底是在说什么?

【问题讨论】:

这不是列表理解。它更类似于三元条件运算符。 不是一行可读吗?? 【参考方案1】:

这称为conditional expression。

表达式 x if C else y 首先计算条件 C (not x);如果 C 为真,则计算 x 并返回其值;否则,计算 y 并返回其值。

所以,你的具体例子相当于:

if color == self.fill2:
    color = self.fill1
else:
    color = self.fill2

【讨论】:

【参考方案2】:

这不是列表理解。它是一种语法糖。 具有讽刺意味的是,它旨在提高可读性。

可以理解为:

if color == self.fill2:
    color = self.fill1
else:
    color = self.fill2

【讨论】:

【参考方案3】:

这是一个conditional expression 请参阅PEP-308。

像这样的

x = true_value if condition else false_value 

也可以写成

if condition:
    x = true_value
else:
    x = false_value

【讨论】:

【参考方案4】:

好吧,它说的正是它所说的:如果color 的值等于self.fill1,则将self.fill1 的值放入color 变量中,否则放入self.fill2。它被称为三元运算符,你可以找到更多关于它的信息here。

【讨论】:

以上是关于这个条件运算符是做啥的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

-> <- 运算符是做啥的?

C 结构点运算符到底是做啥的(低级视角)?

使用 cout 和 cin 时,“<<”和“>>”运算符是做啥的,我们为啥要使用它们?

例如 %+% 是做啥的?在 R 中

这个 php 操作符是做啥的? [复制]

n & (n-1) 这个表达式是做啥的? [复制]