逻辑运算符运算次序

user = 'qin'
pwd = '123'
a = (user == 'qin' and pwd == '123' or 1 == 1 and pwd == 'oo')
print(a)

  结果为:True;

  解析器就是从前到后执行的,碰见一个逻辑运算符比较一下,如果能判断出来真或假,就不需要再判断后面的语句,分析如下:

  1)如果user == 'qin'是false,那么and后面认为全是假的;

  2)如果user == 'qin'是true,那么and后面继续判断第二个条件;

  3)pwd == '123'也是真的,那么user == 'qin' and pwd == '123'是真的,接下来遇到or,不管or后面是真的假的,都是真的;

  再来个例子:

user = 'qin'
pwd = '123'
a = (user == 'qi' and pwd == '123' or 1 == 1 and pwd == '12')
print(a)

  1)user == 'qi' and pwd == '123' 为false;

  2)user == 'qi' and pwd == '123' or 1==1 为true;

  3)pwd == '12' 为false;

  4)所以综合:user == 'qi' and pwd == '123' or 1 == 1 and pwd == '12' 为false;

总结:

  1、true  or   ------> true

  2、true and  --------> 继续走

  3、false or ---------> 继续走

  4、false and  ----------> false

 

posted @ 2018-12-27 19:23  琚老板  阅读(1113)  评论(0)    收藏  举报