什么是b!= a& 1呢?

时间:2016-03-01 08:00:16

标签: python python-2.7

a += b != a & 1

我在代码中遇到了这个声明,但我不确定代码的最后部分(!= a & 1)是做什么的。那是做什么的?

1 个答案:

答案 0 :(得分:6)

首先,您必须参考语言规范以了解操作顺序。括号括起来,这将是:

a += (b != (a & 1))

a & 1是按位的(如果1为奇数,则为a,否则为0),然后将其结果与b进行比较并且布尔值的结果将被添加到a。当然,最新的有意义的a需要是一种可以支持它的类型(例如,整数类型通过将True赋值为1和{ {1}}的值为False)。

总结一下,如果0如果b==0为偶数,a会增加a,如果b==1 a增加a b 0是奇怪的。否则,1既不是a也不是GalleryViewController,它会增加ViewController

我注意到有些评论并没有注意到优先顺序,即使在python中它们有时也会让人感到困惑(特别是如果你已经被C语言的人混淆了)。根据经验,我建议你明确地在子表达式周围放置圆括号,如果你有疑问 - 或者甚至在单独的政治家中将其分解。通常,编译器无论如何都会充分利用它。