‘0’ or print(‘AAA’)
‘0’ and print(‘AAA’)
很奇怪这两段代码都没报错,但‘0’ or print('AAA')没有输出,‘0’ and print(‘AAA’)输出AAA,无法理解
这样就容易理解了,输出结果是这个
说明第一个if执行了,第二个if没执行,同时也说明第一个if判断语句中的print没执行,第二个if判断语句中的print执行了
进一步说明,'0'的逻辑值为真, print('AAA')和print('AAb')的逻辑值为假
原理分析:
if(a or b) 如果a为真,因为逻辑或的缘故,不管b是否为真该if语句都会执行,所以不会对b进行判断
if(a and b) 如果a为真,因为逻辑与的缘故,一定会对b的真值进行判断
def aaa():
'0' or print('or AAA ')
a = 1 or 2
print(a)
'0 ' and print('and AAA ')
if __name__ == '__main__':
# countName()
aaa()
输出结果:
F:\JAVA\PyCharm\Python37\python.exe F:/JAVA/PyCharm/PycharmProjects/http_site/email/ttt.py
1
and AAA
Process finished with exit code 0
这是python的and特性
bool('0') --> True
bool(print('AAA')) --> False
两者都为False,输出前者。两者都为True,输出后者.
比如:
0 and 3 --> 0
3 and 0 --> 3
1 and 3 --> 3
3 and 1 --> 1
同理or的使用
这个叫开关特性吧,在各种编程语言中都有体现,简单来说就是编程语言为了加快运算速度而做的一种操作,规则是这样的,假如一个逻辑表达式是真 or x,无论x是真还是假,这个表达式都是真,那么他就不会继续往下判断了,但是一个表达式是真 and x,他就必须要判断x的真假。结合这个规则来理解你应该就懂了