逻辑运算符运算次序
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
浙公网安备 33010602011771号