Python内置类型(2)——布尔运算
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
Python内置类型(2)——布尔运算的更多相关文章
- Python内置类型性能分析
Python内置类型性能分析 timeit模块 timeit模块可以用来测试一小段Python代码的执行速度. class timeit.Timer(stmt='pass', setup='pass' ...
- Python 内置类型 dict, list,线程安全吗
近段时间发现一个 Python 连接数据库的连接是线程不安全的,结果惹得我哪哪儿都怀疑变量的多线程是否安全的问题,今天终于找到了正确答案,那就是 Python 内置类型 dict,list ,tupl ...
- 为什么继承 Python 内置类型会出问题?!
本文出自"Python为什么"系列,请查看全部文章 不久前,Python猫 给大家推荐了一本书<流畅的Python>(点击可跳转阅读),那篇文章有比较多的"溢 ...
- python内置类型详细解释
文章编写借鉴于内置类型 - Python 3.7.3 文档,主要用于自己学习和记录 python主要内置类型包括数字.序列.映射.类.实例和异常 有些多项集类是可变的.它们用于添加.移除或重排其成员的 ...
- Python——内置类型
Python定义了丰富的数据类型,包括: 数值型:int, float, complex 序列:(iterable) str, unicode, tuple, list, bytearray, buf ...
- 易被忽略的Python内置类型
Python中的内置类型是我们开发中最常见的,很多人都能熟练的使用它们. 然而有一些内置类型确实不那么常见的,或者说往往会被我们忽略,所以这次的主题就是带领大家重新认识这些"不同寻常&quo ...
- Python内置类型——set
Python中,内置类型set和frozenset用来表示集合,我们首先查看这两个类型支持的特殊对象,从而可以理解他们的特性. >>> dir(set) ['__and__', '_ ...
- 3、python内置类型(0529)
python的内置对象类型以及支持的运算 python对象的相关术语 python程序中保存的所有数据都是围绕对象这个概念展开的 程序中存储的所有数据都是对象 每个对象都有一个身份.一个类型和一个值 ...
- Python内置类型(4)--数值
Python有以下三种的数值类型: 整型(integers), 浮点型(floating point numbers), 以及 复数(complex numbers).此外,布尔是整数的子类型. 数值 ...
随机推荐
- Tinyhttpd 代码学习
前阵子,参加了实习生面试,被面试官各种虐,问我说有没有读过一些开源的代码.对于只会用框架的我来说真的是硬伤啊,在知乎大神的推荐下在EZLippi-浮生志找了一些源代码来阅读,于是从小型入手,找了Tin ...
- hdu 3062 2-Sat入门
开始学习2-Sat,前面看了对称性解决2-sat的ppt,很有帮助. 题意:n对夫妻,夫妻需要出席一人,给出不相容的关系,求每对是否能完成出席方案. 思路:通过关系建图,Tarjan缩点,然后进行判断 ...
- NHibernate教程(11)--多对多关联查询
本节内容 多对多关系引入 多对多映射关系 多对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 多对多关系引入 让我们再次回顾在第二篇中建立的数据模型 ...
- 团队作业4——第一次项目冲刺(Alpha版本)4.22
团队作业4--第一次项目冲刺(Alpha版本) Day one: 会议照片 由于团队中的组员今天不在学校,所以我们的站立会议提前一天展开. 项目进展 由于今天是Alpha版本项目冲刺的第一天,所以没有 ...
- 201521123032 《Java程序设计》第3周学习总结
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...
- 201521123042《Java程序》第二周总结
1. 本周学习总结 了解枚举类型的使用方法. 学会使用ArrayList替换数组,并且学会运用相关函数,例如: strList.contains(str)(判断数组中是否包含字符串str,包含则返回t ...
- 201521123094 《Java程序设计》第1周学习总结
1. 本周学习总结 ① Java根据应用领域分为三大平台:Java SE.Java EE.Java ME.Java SE平台,作为各大平台的基础,它分成JVM/JRE/JDK/Java语言四个主要部分 ...
- MyBatis学习(四)XML配置文件之SQL映射的XML文件
SQL映射文件常用的元素: 1.select 查询语句是MyBatis最常用的语句之一. 执行简单查询的select元素是非常简单的: <select id="selectUser&q ...
- Openlayers系列(一)关于地图投影的理解
背景 近期开发以MongoDB为基础的分布式地理数据管理平台系统,被要求做一个简单的demo给客户进行演示.于是笔者便打算向数据库中存储一部分瓦片数据,写一个简单的存取服务器,使用Openlayers ...
- 将Editplus添加到右键打开菜单
因为自己一直用Editplus作为文本打开工具,新的电脑将压缩文件复制了过来,但是没有右键打开了. 第一打开注册表 在命令框中输入regedit 第二在注册表中输入选项 如下图所示在下拉菜单中新建Ed ...