python 运算中的|作用
python 运算中的|作用
因为有程序要用到操作注册表,在学习其他的代码中,有一句是用|来表示的 reg_flags = win32con.WRITE_OWNER|win32con.KEY_WOW64_64KEY|win32con.KEY_ALL_ACCESS 当时以为|是个或,即OR的用法,但使用|表示OR时,出错了,当时由于解决用了其他的方法,就一直没有在意,当细研究才发现,|绝对不是简单的或的用法。
现总结如下:当x=5;y=3时 1、当两边都有判定条件时,|两侧用加()的表达式时,与OR的用法相同。 如(x==2)|(y==3) 即为TRUE。即x=2或y=3成立,则为True 2、当两边都有判定条件时,|两侧没有用()的表达式时,先计算|,再判定其他部分, 如:(x==2|y==3)为 False。令人十分纳闷,怎么会出现这样的情况。 我们先看第3条规则,回头再来理解为什么是False。 3、当两边为数字时,计算规则为两边的数字转化为二进制,每进位进行运算或的关系,则有 (3|10)=11 (5|3)=7 用二进制表示中3=11 5=101 10=110 则: 0011+ 1010=1011即11 即3|10为11 101+ 011=111 即7 即5|3=7 这里1可以理解为True。0为Flase,0 or 0=0; 0 or 1=1 ;1 or 1=1; 回头再看2中的情况, 首先计算的是2|y ,即2|3 即为3 10+11=11 再来计算(x==3==3);首先是x==3为Flase, 再来计算Flase==3 为Flase 所以想要用|表示OR,则要在|两侧加上() ((x==2)|(y==3))这样的表达方式更为准确。
下面的代码非常有迷惑性了: print (y==3|x==5) 这是False (True|1==1)) 这是True ((y==3|x)==2)这是False