1

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

color = self.color2

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

这到底在说什么?

4

4 回答 4

5

这称为条件表达式

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

因此,您的具体示例相当于:

if color == self.fill2:
    color = self.fill1
else:
    color = self.fill2
于 2013-03-10T08:01:42.833 回答
3

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

它可以解释为:

if color == self.fill2:
    color = self.fill1
else:
    color = self.fill2
于 2013-03-10T07:59:19.963 回答
1

这是一个条件表达式参见PEP-308

所以像这样

x = true_value if condition else false_value 

它也可以写成

if condition:
    x = true_value
else:
    x = false_value
于 2013-03-10T08:07:50.167 回答
0

好吧,它准确地说出它所说的:如果值等于,则将 的值self.fill1放入变量中,否则放入。它被称为三元运算符,您可以在此处找到有关它的更多信息。colorcolorself.fill1self.fill2

于 2013-03-10T08:01:52.230 回答