资讯专栏INFORMATION COLUMN

Python标准库---9、内置类型:逻辑值检测、布尔运算、比较

zeyu / 1058人阅读

摘要:逻辑值检测任何对象都可以进行逻辑值的检测,以便在或作为条件或是作为下文所述布尔运算的操作数来使用。重要例外布尔运算和总是返回其中一个操作数。的优先级比非布尔运算符低,因此会被解读为而会引发语法错误。它们的优先级相同比布尔运算的优先级高。

上一篇文章:Python标准库---8、内置常量
下一篇文章:Python标准库---10、内置类型:数字类型
内置类型

以下部分描述了解释器中内置的标准类型。

主要内置类型有数字、序列、映射、类、实例和异常。

有些多项集类是可变的。 它们用于添加、移除或重排其成员的方法将原地执行,并不返回特定的项,绝对不会返回多项集实例自身而是返回 None。

有些操作受多种对象类型的支持;特别地,实际上所有对象都可以被比较、检测逻辑值,以及转换为字符串(使用 repr() 函数或略有差异的 str() 函数)。 后一个函数是在对象由 print() 函数输出时被隐式地调用的。

逻辑值检测

任何对象都可以进行逻辑值的检测,以便在 if 或 while 作为条件或是作为下文所述布尔运算的操作数来使用。

一个对象在默认情况下均被视为真值,除非当该对象被调用时其所属类定义了 __bool__() 方法且返回 False 或是定义了 __len__() 方法且返回零。 下面基本完整地列出了会被视为假值的内置对象:

被定义为假值的常量: None 和 False。

任何数值类型的零: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)

空的序列和多项集: "", (), [], {}, set(), range(0)

产生布尔值结果的运算和内置函数总是返回 0 或 False 作为假值,1 或 True 作为真值,除非另行说明。 (重要例外:布尔运算 or 和 and 总是返回其中一个操作数。)

布尔运算 --- and, or, not

这些属于布尔运算,按优先级升序排列:

注释:

这是个短路运算符,因此只有在第一个参数为假值时才会对第二个参数求值。

这是个短路运算符,因此只有在第一个参数为真值时才会对第二个参数求值。

not 的优先级比非布尔运算符低,因此 not a == b 会被解读为 not (a == b) 而 a == not b 会引发语法错误。

比较

在 Python 中有八种比较运算符。 它们的优先级相同(比布尔运算的优先级高)。 比较运算可以任意串连;例如,x < y <= z 等价于 x < y and y <= z,前者的不同之处在于 y 只被求值一次(但在两种情况下当 x < y 结果为假值时 z 都不会被求值)。

此表格汇总了比较运算:

除了不同数字类型以外,不同类型的对象比较时绝对不会相等。 而且,某些类型(例如函数对象)仅支持简化比较形式,即任何两个该种类型的对象必定不相等。 <, <=, > 和 >= 运算符在以下情况中将引发 TypeError 异常:当比较复数与另一个内置数字类型时,当两个对象具有无法被比较的不同类型时,或在未定义次序的其他情况时。

具有不同标识的类的实例比较结果通常为不相等,除非类定义了 __eq__() 方法。

一个类实例不能与相同类或的其他实例或其他类型的对象进行排序,除非该类定义了足够多的方法,包括 __lt__(), __le__(), __gt__() 以及 __ge__() (而如果你想实现常规意义上的比较操作,通常只要有 __lt__() 和 __eq__() 就可以了)。

is 和 is not 运算符无法自定义;并且它们可以被应用于任意两个对象而不会引发异常。

还有两种具有相同语法优先级的运算 in 和 not in,它们被 iterable 或实现了 __contains__() 方法的类型所支持。

上一篇文章:Python标准库---8、内置常量
下一篇文章:Python标准库---10、内置类型:数字类型

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43977.html

相关文章

  • Python标准---8、内置常量

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置类型逻辑值检测布尔运算比较内置常量有少数的常量存在于内置命名空间中。给赋值是非法的并会引发。如果所有尝试都返回,则解释器将引发适当的异常。如果没有以选项启动,则此常量为真值。 上一篇文章:Python标准库---7、内置函数(V-W-X-Y-Z)下一篇文章:Python标准库---9、内置类型:逻辑值检测、布尔运算、比较 内置常量 有少数的...

    gplane 评论0 收藏0
  • Python标准---10、内置类型:数字类型

    摘要:上一篇文章标准库内置类型逻辑值检测布尔运算比较下一篇文章标准库内置类型迭代器类型序列类型数字类型存在三种不同的数字类型整数浮点数和复数。标准库包含附加的数字类型,如表示有理数的以及以用户定制精度表示浮点数的。 上一篇文章:Python标准库---9、内置类型:逻辑值检测、布尔运算、比较下一篇文章:Python标准库---11、内置类型:迭代器类型、序列类型 数字类型 --- int,...

    NotFound 评论0 收藏0
  • Python标准---16、内置类型:上下文管理器类型、其他、特殊属性

    摘要:退出运行时上下文并返回一个布尔值旗标来表明所发生的任何异常是否应当被屏蔽。除了实现上下文管理协议以外,不同类型不会被特殊处理。其中一些并不会被内置函数所列出。 上一篇文章:Python标准库---15、内置类型:集合类型、映射类型下一篇文章:Python标准库---17、内置异常 上下文管理器类型 Python 的 with 语句支持通过上下文管理器所定义的运行时上下文这一概念。 此...

    zhisheng 评论0 收藏0
  • Python标准---11、内置类型:迭代器类型、序列类型(list-typle-range)

    摘要:上一篇文章标准库内置类型数字类型下一篇文章标准库内置类型文本序列类型迭代器类型支持在容器中进行迭代的概念。该对象需要支持下文所述的迭代器协议。这是同时允许容器和迭代器配合和语句使用所必须的。 上一篇文章:Python标准库---10、内置类型:数字类型下一篇文章:Python标准库---12、内置类型:文本序列类型(str) ## 迭代器类型Python 支持在容器中进行迭代的概念。...

    syoya 评论0 收藏0
  • 【数据科学系统学习】Python # 数据分析基本操作[一] numpy

    摘要:提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数。结构化数据,例如多维数据矩阵表格行数据,其中各列可能是不同的类型字符串数值日期等。基础数组和矢量计算高性能科学计算和数据分析的基础包。 本篇内容为整理《利用Python进行数据分析》,博主使用代码为 Python3,部分内容和书本有出入。 利用 Python 进行科学计算的实用指南。本书重点介绍了用于高效解决各种数据分析问...

    wushuiyong 评论0 收藏0

发表评论

0条评论

zeyu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<