几乎所有对象都可以比较、测试真值、转换为字符串(其实就是用repr()函数,或略有差异的str()函数来转换)

1 对象是否为真

任何对象都可以测试真值,用于ifwhile的条件或下面布尔运算的操作数。下面的值被视为假:

  • None

  • False

  • 任何数值类型的零,例如,0、 0L0.0、 0j

  • 任何空的序列,例如, ''、 ()、 []

  • 任何空的映射,例如,{}

  • 用户定义的类的实例,如果该类定义一个__nonzero__()__len__()的方法,在该方法返回整数零或布尔False时。[1]

所有其他值都被视为真 — 所以许多类型的对象永远为真。

除非另有说明,结果为布尔值的运算和内建函数总是返回0False表示假,1True表示真(重要的例外:布尔操作符orand始终返回它们的一个操作数。)

2 布尔值操作 or and not

这些是布尔操作,按升序优先排序:

操作 结果
x or y 如果x为假,那么返回y,否则返回x (1)
x and y 如果x为假,那么返回x,否则返回y (2)
not x 如果x为假,那么返回True,否则返回False (3)

注:

  1. 这是一个短路操作符,因此只有第一个参数为False时才计算第二个参数。
  2. 这是一个短路操作符,因此只有第一个参数为True时才计算第二个参数。
  3. not比非布尔操作符的优先级低,因此not a == b解释为not (a == b)a == not b是一个语法错误。

比较操作

所有对象都支持比较操作。它们都具有相同的优先级(高于布尔操作)。比较可以任意链接;例如,x < y < = z相当于x < y and y < = z,只是y只计算一次(但这两种情况在x < y为假时都不会计算z)。

下表汇总了比较操作:

操作 含义
< 严格地小于  
<= 小于或等于  
> 严格地大于  
>= 大于或等于  
== 等于  
!= 不等于 (1)
is 对象的ID  
is not 不同的对象ID  

注:

  1. !=也可以写成<>,但这只是用于保持向后兼容性的用法。新的代码应该一直使用!=

不同类型的对象,不同的数值和字符串类型除外,比较结果永远不会相等;这类对象排序的结果永远一致但是顺序却是随机的(使得异构数组的排序可以生成一致的结果)。此外,某些类型(例如,文件对象)只支持退化的比较概念,该类型的任何两个对象都不相等。同样,这类对象排序的顺序是随机的但是会永远是一致的。当任何一个操作数是复数时,< = >> =运算符会引发TypeError异常。

类的非同一个实例比较时通常不相等,除非该类定义__eq__()__cmp__()方法。

一个类的实例通常不能与同一个类的其它实例或者其他类型的对象排序,除非该类定义足够丰富的比较方法(__ge__()__le__()__gt__()__lt__())或__cmp__()方法。

[python学习篇][书籍学习][python standrad library][内置类型]对象测试真值,布尔值操作, 比较操作的更多相关文章

  1. [python学习篇][书籍学习][python standrad library][内建函数]之[all,any,basestring,isinstance,bin,bool,@classmethod,@staticmethod,cmp,enumerate

    Python 解释器内置了一些函数,它们总是可用的.这里将它们按字母表顺序列出.     Built-in Functions     abs() divmod() input() open() st ...

  2. [python学习篇][书籍学习][python standrad library][内建函数]之[list,open,len,pow,range,

    Python 解释器内置了一些函数,它们总是可用的.这里将它们按字母表顺序列出.     Built-in Functions     abs() divmod() input() open() st ...

  3. [python学习篇][书籍学习][python standrad library][内建类型]迭代器类型

    我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list.tuple.dict.set.str等:一类是generator,包括生成器和带yield的generato ...

  4. [python学习篇][书籍学习][python standrad library][内建类型]之数值

    数值类型 — int, float, long, complex 有四种不同的数值类型:普通整数.长整数.浮点数和复数 普通整数(或者简称整数)使用C中的long实现,其精度至少为32位(sys.ma ...

  5. python基础篇_001_初识Python

    一.Python环境 windows环境安装Python步骤 .下载安装包:https://www.python.org/downloads/windows/  .安装:默认安装路径:C:\pytho ...

  6. [python学习篇][系统学习][1]python标准库中文、英文网址(一些内建函数,标准库都可以在这里查找)

    http://docspy3zh.readthedocs.io/en/latest/library/   半中文网址 http://usyiyi.cn/translate/python_278/lib ...

  7. Python进阶篇四:Python文件和流

    摘要: Python对于文件和流的操作与其他编程语言基本差不多,甚至语句上比其他语言更为简洁.文件和流函数针对的对象除了这两者之外还有,类文件(file-like),即python中只支持读却不支持写 ...

  8. python 基础篇 14 程程器表达式 内置函数

    昨日内容回顾    可迭代对象:        内部含有__iter__方法的就是可迭代对象.        可迭代对象不能取值,因为内部不含有__next__方法.     可迭代对象 ---> ...

  9. Python开发篇——构建虚拟Python开发环境(Conda+Poetry)

    前言 之前虽略有提及Python,但是没有实际地写点料.惭愧,惭愧,所以这次先起个头,讲讲如何构建虚拟Python开发环境.相信之前看过我博客的人可能会想:博主不会又要聊聊Docker吧?放心,不会. ...

随机推荐

  1. u-boot剖析(一)----Makefile分析

    由于u-boot比较庞大,所以我们分开来分析,对于一个大型的项目我们想快速的了解其代码架构和内容,最方便的方法就是分析Makefile,所以我们今天以三星的s3c2440来分析Makefile.我们今 ...

  2. HDU 2639 Bone Collector II (01背包,第k解)

    题意: 数据是常规的01背包,但是求的不是最大容量限制下的最佳解,而是第k佳解. 思路: 有两种解法: 1)网上普遍用的O(V*K*N). 2)先用常规01背包的方法求出背包容量限制下能装的最大价值m ...

  3. 【Python图像特征的音乐序列生成】GitHub已经有人将mingus改到了Python3版本

    https://github.com/bspaans/python-mingus/issues/45 注意此时的安装方法应该是: git clone https://github.com/edudob ...

  4. GetOpenFileName 选择文件夹的解决方法

    某些环境下(如WIN PE)windows自带的选择文件夹api不能使用或者体验不佳.现在利用GetOpenFileName的回掉参数实现了选择文件夹选择功能. #include <Window ...

  5. java入门第一章——java开发入门

    习题解答 一.填空题 (p2)1.java的三个技术平台分别是(java SE.java EE.java ME)(标准.企业.小型) (p3)2.java程序的运行环境简称为(JRE)(开发环境-JD ...

  6. 2018.4.21 如何正确快速安装/卸载云服务器Centos7安装GUI图形化界面GNOME桌面环境

    为云服务哦Centos安装图形化界面GNOME .KDE 1.开始前先验证一下能不能上网 ping www.baidu.com 2.接下来开始安装X(X Window System),命令为 yum ...

  7. kubernetes监控-prometheus(十六)

    监控方案 cAdvisor+Heapster+InfluxDB+Grafana Y 简单 容器监控 cAdvisor/exporter+Prometheus+Grafana Y 扩展性好 容器,应用, ...

  8. c#和Java中的多态

    多态:让一个对象表现出多种类型,写出通用的代码,最大限度的屏蔽各个子类之间的差异性. c#举例: 将父类的方法标记为虚方法 ,使用关键字 virtual,这个函数可以被子类重新写一个遍. //真的鸭子 ...

  9. oc 数据类型转换

    NSNumber转NSString: 假设现有一NSNumber的变量A,要转换成NSString类型的B 方法如下: NSNumberFormatter* numberFormatter = [[N ...

  10. 浅谈一类「AC自动机计数」问题

    最近写了几道AC自动机的题.这几题主要考察的是对AC自动机的浅层理解套上计数. 几道计数题 [AC自动机]bzoj3172: [Tjoi2013]单词 把被动贡献看成主动贡献. [状态压缩dp]119 ...