您应该写:
if (self.a != 0) and (self.b != 0) :
“
&”是按位运算符,不适合布尔运算。
&&在Python中,“ ”的等效项是“和”。
检查所需内容的一种较短方法是使用“ in”运算符:
if 0 not in (self.a, self.b) :
您可以使用“ in”检查是否有任何东西是可迭代的一部分,它适用于:
- 元组。IE:
"foo" in ("foo", 1, c, etc)将返回true - 清单。IE:
"foo" in ["foo", 1, c, etc]
将返回true - 字符串。IE:
"a" in "ago"
将返回true - 字典 IE:
"foo" in {"foo" : "bar"}将返回true
作为对评论的回答:
是的,由于要创建Tuple对象,因此使用“ in”的速度较慢,但是实际上性能不是问题,此外,在Python中,可读性也很重要。
对于三角形检查,更容易阅读:
0 not in (self.a, self.b, self.c)
比
(self.a != 0) and (self.b != 0) and (self.c != 0)
重构也更容易。
当然,在此示例中,它实际上并不是那么重要,它是非常简单的代码段。但是这种风格导致了Python式代码的出现,从而导致大型程序上的程序员更加快乐(并且减轻了体重,改善了性生活,等等)。



