好奇怪啊,Python怎么解释这两段代码?

‘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的真假。结合这个规则来理解你应该就懂了