Python内置类型(2)——布尔运算
2024-10-19 03:38:46
python中bool运算符按优先级顺序分别有
or
、and
、not
, 其中or
、and
为短路运算符
not
先对表达式进行真值测试后再取反
not
运算符值只有1个表达式,not
先对表达式进行真值测试后再取反,返回的结果不是True
就是False
>>> expression1 = ''
>>> expression2 = '1'
>>> not expression1
True
>>> not expression2
False
or
、and
运算符返回的结果是操作符两边的表达式中的符合逻辑条件的其中一个表达式的结果
在其它语言中,比如C#,bool运算的结果肯定也是bool值;但是python中不是这样的,它返回的是满足bool运算条件的其中一个表达式的值。
x or y
:
若 x
为True
,则结果为x
;若x
为False
, 则结果为y
。
>>> expression1 = '1'
>>> expression2 = '2'
>>> expression1 or expression2
'1'
>>> expression2 or expression1
'2'
x and y
:
若 x
为False
,则结果为x
;若x
为True
, 则结果为y
。
>>> expression1 = ''
>>> expression2 = {}
>>> expression1 and expression2
''
>>> expression2 and expression1
{}
or
、and
运算符是短路运算符
短路运算符的意思是,运算符左右的表达式的只有在需要求值的时候才进行求值。比如说x or y
,python从左到右进行求值,先对表达式x
的进行真值测试,如果表达式x
是真值,根据or
运算符的特性,不管y
表达式的bool结果是什么,运算符的结果都是表达式x
,所以表达式y
不会进行求值。这种行为被称之为短路特性。
#函数功能判断一个数字是否是偶数
def is_even(num):
print('input num is :',num)
return num % 2 == 0
#is_even(1)被短路,不会执行
>>> is_even(2) or is_even(1)
input num is : 2
True
>>> is_even(1) or is_even(2)
input num is : 1
input num is : 2
True
or
、and
运算符可以多个组合使用,使用的时候将以此从左到右进行短路求值,最后输入结果
表达式x or y and z
,会先对x or y
进行求值,然后求值的结果再和z
进行求值,求值过程中依然遵循短路原则。
#is_even(2)、is_even(4)均被短路
>>> is_even(1) and is_even(2) and is_even(4)
this num is : 1
False
# is_even(1)为False,is_even(3)被短路
# is_even(1) and is_even(3)为False,is_even(5)需要求值
# is_even(1) and is_even(3) or is_even(5)为False,is_even(7)被短路
>>> is_even(1) and is_even(3) or is_even(5) and is_even(7)
this num is : 1
this num is : 5
False
not
运算符的优先级比or
、and
高,一起使用的时候,会先计算not
,再计算or
、and
的值
>>> is_even(1) or is_even(3)
this num is : 1
this num is : 3
False
>>> not is_even(1) or is_even(3)
this num is : 1
True
>>> is_even(1) or not is_even(3)
this num is : 1
this num is : 3
True
>>>
not
运算符的优先级比==
、!=
低,not a == b
会被解释为 not (a == b)
, 但是a == not b
会提示语法错误。
>>> not 1 == 1
False
>>> 1 == not 1
SyntaxError: invalid syntax
>>> not 1 != 1
True
>>> 1 != not 1
SyntaxError: invalid syntax
最新文章
- ae显示标注
- oracle--创建表空间、用户名、密码
- [lintcode the-smallest-difference]最小差(python)
- linux之Vim使用
- SGU 249.Matrix(Gray码)
- First ASP.NET Core Application on a Mac Using Visual Studio Code
- ceph主要数据结构解析3-Ceph_fs.h文件
- js生成随机数的方法小结
- mysql 分库分表的方法
- php的DOMDocument 如何判断xml是否存在某节点
- 在表单(input)中id和name的区别
- HDU 2674 N!Again
- 一键生成JNI头文件方法二
- gradle环境变量设置_配置注意事项
- CSRFGuard工具介绍
- python_day1_常量
- ThinkNet终于见面了
- Fedora 19安装mysql
- Win7/Win8安装";我们无法创建新的分区,也找不到现有的分区";的解决方法
- Ubuntu忘记MySQL密码重设方法
热门文章
- Spring Boot + Dubbo 可运行的例子源码-实现服务注册和远程调用
- JavaScript中你所不知道的Object(二)--Function篇
- 通信原理课程设计Javaswing技术计算出PCM编码——猎八哥FLY
- idea插件之——在markdown复制粘贴图片
- 集美大学网络1413第十二次作业成绩(个人作业3) -- Alpha阶段个人总结
- 201521123056 《Java程序设计》第7周学习总结
- 201521123003《Java程序设计》第1周学习总结
- 201521123092,《java程序设计》第1周学习总结
- 201521123010 《Java程序设计》第10周学习总结
- 201521123045 《Java程序设计》第9周学习总结