[python学习篇][书籍学习][python standrad library][内置类型]对象测试真值,布尔值操作, 比较操作
几乎所有对象都可以比较、测试真值、转换为字符串(其实就是用repr()函数,或略有差异的str()函数来转换)
1 对象是否为真
任何对象都可以测试真值,用于if或while的条件或下面布尔运算的操作数。下面的值被视为假:
None
False
任何数值类型的零,例如,0、 0L、0.0、 0j。
任何空的序列,例如, ''、 ()、 []。
任何空的映射,例如,{}。
用户定义的类的实例,如果该类定义一个__nonzero__()或__len__()的方法,在该方法返回整数零或布尔值False时。[1]
所有其他值都被视为真 — 所以许多类型的对象永远为真。
除非另有说明,结果为布尔值的运算和内建函数总是返回0或False表示假,1或True表示真(重要的例外:布尔操作符or和and始终返回它们的一个操作数。)
2 布尔值操作 or and not
这些是布尔操作,按升序优先排序:
| 操作 | 结果 | 注 |
|---|---|---|
| x or y | 如果x为假,那么返回y,否则返回x | (1) |
| x and y | 如果x为假,那么返回x,否则返回y | (2) |
| not x | 如果x为假,那么返回True,否则返回False | (3) |
注:
- 这是一个短路操作符,因此只有第一个参数为False时才计算第二个参数。
- 这是一个短路操作符,因此只有第一个参数为True时才计算第二个参数。
- 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 |
注:
- !=也可以写成<>,但这只是用于保持向后兼容性的用法。新的代码应该一直使用!=。
不同类型的对象,不同的数值和字符串类型除外,比较结果永远不会相等;这类对象排序的结果永远一致但是顺序却是随机的(使得异构数组的排序可以生成一致的结果)。此外,某些类型(例如,文件对象)只支持退化的比较概念,该类型的任何两个对象都不相等。同样,这类对象排序的顺序是随机的但是会永远是一致的。当任何一个操作数是复数时,<、 =、 >和> =运算符会引发TypeError异常。
类的非同一个实例比较时通常不相等,除非该类定义__eq__()或__cmp__()方法。
一个类的实例通常不能与同一个类的其它实例或者其他类型的对象排序,除非该类定义足够丰富的比较方法(__ge__()、__le__()、__gt__()、__lt__())或__cmp__()方法。
[python学习篇][书籍学习][python standrad library][内置类型]对象测试真值,布尔值操作, 比较操作的更多相关文章
- [python学习篇][书籍学习][python standrad library][内建函数]之[all,any,basestring,isinstance,bin,bool,@classmethod,@staticmethod,cmp,enumerate
Python 解释器内置了一些函数,它们总是可用的.这里将它们按字母表顺序列出. Built-in Functions abs() divmod() input() open() st ...
- [python学习篇][书籍学习][python standrad library][内建函数]之[list,open,len,pow,range,
Python 解释器内置了一些函数,它们总是可用的.这里将它们按字母表顺序列出. Built-in Functions abs() divmod() input() open() st ...
- [python学习篇][书籍学习][python standrad library][内建类型]迭代器类型
我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list.tuple.dict.set.str等:一类是generator,包括生成器和带yield的generato ...
- [python学习篇][书籍学习][python standrad library][内建类型]之数值
数值类型 — int, float, long, complex 有四种不同的数值类型:普通整数.长整数.浮点数和复数 普通整数(或者简称整数)使用C中的long实现,其精度至少为32位(sys.ma ...
- python基础篇_001_初识Python
一.Python环境 windows环境安装Python步骤 .下载安装包:https://www.python.org/downloads/windows/ .安装:默认安装路径:C:\pytho ...
- [python学习篇][系统学习][1]python标准库中文、英文网址(一些内建函数,标准库都可以在这里查找)
http://docspy3zh.readthedocs.io/en/latest/library/ 半中文网址 http://usyiyi.cn/translate/python_278/lib ...
- Python进阶篇四:Python文件和流
摘要: Python对于文件和流的操作与其他编程语言基本差不多,甚至语句上比其他语言更为简洁.文件和流函数针对的对象除了这两者之外还有,类文件(file-like),即python中只支持读却不支持写 ...
- python 基础篇 14 程程器表达式 内置函数
昨日内容回顾 可迭代对象: 内部含有__iter__方法的就是可迭代对象. 可迭代对象不能取值,因为内部不含有__next__方法. 可迭代对象 ---> ...
- Python开发篇——构建虚拟Python开发环境(Conda+Poetry)
前言 之前虽略有提及Python,但是没有实际地写点料.惭愧,惭愧,所以这次先起个头,讲讲如何构建虚拟Python开发环境.相信之前看过我博客的人可能会想:博主不会又要聊聊Docker吧?放心,不会. ...
随机推荐
- 真正的S2b其实是S2b2c
本文转自阿里参谋长曾鸣:真正的S2b其实是S2b2c! 在<在未来五年,S2b是最有可能领先的商业模式>这篇文章发表之后,曾鸣书院收到了非常多的反馈,看到很多实践和思考. 在这篇文章中,曾 ...
- 用Python完成根据日期计算是星期几
import datetime def week(year,month,day): someday=dayetime.date(year,month,day) result={ "0&quo ...
- Python+selenium之调用JavaScript
webdriver提供了操作浏览器的前进和后退的方法,但是对于浏览器公东条并没有提供相应的操作方法.于是就需要借助JavaScript来控制浏览器的滚动条.webdriver提供了execute_sr ...
- 数组Array和字符串String的indexOf方法,以及ES7(ES2016)中新增的Array.prototype.includes方法
前言 我们在判断某一个字符是否存在于一个字符串中或者某一个值是否存在于一个数组中时,ES7之前我们需要使用indexOf,ES7引入了新的方法includes 语法 数组:Array.inexOf(s ...
- python_83_random_应用验证码
import random checkcode='' for i in range(0,5):#5位验证码 current=random.randrange(0,5) #字母 if current== ...
- Python-DDT实现接口自动化
Get请求参数化例子 import unittest import requests import ddt @ddt.ddt class MyTestCase(unittest.TestCase): ...
- Mysql 8.0 新特性
转载:https://www.jianshu.com/p/be29467c2b0c
- python特殊字符转义符号表示
- ubuntu系统普通用户密码忘记之重置
当我们在使用ubuntu系统忘记普通用户登录密码的时候,会被系统在登录界面拒之门外而不得入,这时候只好需要我们去重新设置密码,具体做法如下: 系统重启,在GRUB模式下选择Advanced Optio ...
- 初识Mysql之基本简单语法总结
一. DDL(data definition language)语句:数据定义语言. 这些语句定义了不同的数据段.数据库.表.列.索引等数据库对象.常用语句关键字:create.drop.alter ...