前言
:很久以来,一直都觉得在python中的逻辑运算符(or,and)返回值是True/False,后来才发现自己是错的,也发现好像没有任何人告诉过我返回的就是True/False,只是自己的默认觉得,这难道就是传说中的曼德拉效应吗
一. 返回了什么
返回的是进行比较的某个值
二. 栗子
1. and
>>> 1 and 2
2
>>> 0 and 2
0
>>> 0 and []
0
其实就是:
返回最后一个真
返回第一个假
2. or
>>> 1 or 2
1
>>> 0 or 2
2
>>> 0 or []
[]
其实就是:
返回第一个真
返回最后一个假
2. and + or
对于结合起来的and和or,其实根据相应的规律层层推测就可以知道返回了什么:
>>> 1 or 2 and 3
1
>>> 0 and (2 or [])
0
在这里要注意下,在python中,若在不加括号的情况下,and的优先级是大于or的,所以上面1 or 2 and 3
其实是先计算了2 and 3得到3,再计算1 or 3得到1
三. 应用
下面举一些例子:
1.文件夹是否存在
from os.path import exists
exists('a') or mkdir('a')
exists()可以判断某一文件或文件夹是否存在,返回True/False;上面若文件存在,则为True,因为是or,所以不会执行后面的mkdir('a'),相当于:
if not exists('a'):
mkdir('a')
2.返回什么
return a or b
a有结果则返回a,否则返回b,相当于:
if a:
return a
return b
【以上仅为个人经验总结,持续更新中,错误请指出,谢谢!!!】