一、逻辑运算符and字面意思是“而且”所以and运算符会连接两个布尔值如果两个布尔值都是True那么运算的结果就是True左右两边的布尔值有一个是False最终的运算结果就是False。# andprint(TrueandFalse)# Falseprint(TrueandTrue)# Trueprint(FalseandFalse)# Falseprint(12and2!3)# False,运算符两边也可以是表达式or字面意思是“或者”所以or运算符也会连接两个布尔值如果两个布尔值有任意一个是True那么最终的结果就是True。# orprint(TrueorFalse)# Trueprint(FalseorTrue)# Trueprint(FalseorFalse)# Truenot运算符的后面会跟上一个布尔值它的作用是得到与该布尔值相反的值也就是说后面的布尔值如果是True运算结果就是False而后面的布尔值如果是False则运算结果就是True。# notprint(not1)# Falseprint(not0)# Trueprint(not35)# True,运算符是有优先级的,的优先级比not的优先级高print((not3)5)# False,也可以自己加上括号来改变计算顺序print(3not5)# 报错,not优先级没有优先级高逻辑运算符优先级# 逻辑运算符的优先级为notandorprint(TrueorFalseandFalse)# True,先计算and再计算orprint((TrueorFalse)andFalse)# False,也可以手动添加括号改变优先级print(notFalseandTrue)# Trueprint(0andnot1ornot2and3or4andnot5)# False短路运算如果and左边的布尔值是False不管右边的布尔值是什么最终的结果都是False所以在做运算的时候右边的值会被跳过短路处理这也就意味着在and运算符左边为False的情况下右边的表达式根本不会执行or运算符也是有短路功能的在它左边的布尔值为True的情况下右边的表达式根本不会执行。# 短路运算# 注意and和or运算符并不直接返回True和False,而是由表达式最终真值那个操作数的原始值print(Falseand(TrueorTrue))# False,先计算or返回True,再计算and,此时and左边为False直接返回Falseprint(FalseandTrueorTrue)# True,先计算and返回False,再计算or,返回Trueprint(3orFalse)# 3,or左边为真发生短路,or右边不需要执行,返回最终值3print(1andTrue)# True,1为真此时运算符为and还需要看后面一个值,后面一个值也为真,所以返回最后一个值的原始值print(1and2)# 2print(53and4)# 4print([1,2,3]andHello)# Helloprint(3or5and0)# 3,先计算and再计算orprint(3and5TrueorFalse)# 6,先计算5True等于6,再计算3 and 6 or False二、运算符优先级总结括号优先级永远最高算术运算**、*、/、%、、-高于比较运算比较运算高于逻辑运算not、and、or赋值运算符优先级最低若有复杂表达式建议用括号明确顺序提高可读性
Python 基础教程:运算符之逻辑运算符与优先级(第6篇)
一、逻辑运算符and字面意思是“而且”所以and运算符会连接两个布尔值如果两个布尔值都是True那么运算的结果就是True左右两边的布尔值有一个是False最终的运算结果就是False。# andprint(TrueandFalse)# Falseprint(TrueandTrue)# Trueprint(FalseandFalse)# Falseprint(12and2!3)# False,运算符两边也可以是表达式or字面意思是“或者”所以or运算符也会连接两个布尔值如果两个布尔值有任意一个是True那么最终的结果就是True。# orprint(TrueorFalse)# Trueprint(FalseorTrue)# Trueprint(FalseorFalse)# Truenot运算符的后面会跟上一个布尔值它的作用是得到与该布尔值相反的值也就是说后面的布尔值如果是True运算结果就是False而后面的布尔值如果是False则运算结果就是True。# notprint(not1)# Falseprint(not0)# Trueprint(not35)# True,运算符是有优先级的,的优先级比not的优先级高print((not3)5)# False,也可以自己加上括号来改变计算顺序print(3not5)# 报错,not优先级没有优先级高逻辑运算符优先级# 逻辑运算符的优先级为notandorprint(TrueorFalseandFalse)# True,先计算and再计算orprint((TrueorFalse)andFalse)# False,也可以手动添加括号改变优先级print(notFalseandTrue)# Trueprint(0andnot1ornot2and3or4andnot5)# False短路运算如果and左边的布尔值是False不管右边的布尔值是什么最终的结果都是False所以在做运算的时候右边的值会被跳过短路处理这也就意味着在and运算符左边为False的情况下右边的表达式根本不会执行or运算符也是有短路功能的在它左边的布尔值为True的情况下右边的表达式根本不会执行。# 短路运算# 注意and和or运算符并不直接返回True和False,而是由表达式最终真值那个操作数的原始值print(Falseand(TrueorTrue))# False,先计算or返回True,再计算and,此时and左边为False直接返回Falseprint(FalseandTrueorTrue)# True,先计算and返回False,再计算or,返回Trueprint(3orFalse)# 3,or左边为真发生短路,or右边不需要执行,返回最终值3print(1andTrue)# True,1为真此时运算符为and还需要看后面一个值,后面一个值也为真,所以返回最后一个值的原始值print(1and2)# 2print(53and4)# 4print([1,2,3]andHello)# Helloprint(3or5and0)# 3,先计算and再计算orprint(3and5TrueorFalse)# 6,先计算5True等于6,再计算3 and 6 or False二、运算符优先级总结括号优先级永远最高算术运算**、*、/、%、、-高于比较运算比较运算高于逻辑运算not、and、or赋值运算符优先级最低若有复杂表达式建议用括号明确顺序提高可读性