Python基础教程:内置类型之真值测试
python中任何对象都能直接进行真假值的测试,用于if或者while语句的条件判断,也可以做为布尔逻辑运算符的操作数
python中任何对象都能直接进行真假值的测试,而不需要额外的类型转换
这一点是和其它语言不一样的。比如C#,一个非bool的对象,如果要进行逻辑判断则必须先强制进行类型转换、或者调用对象的自身判断方法进行判断。
var message = " ";
if (message.IsNullOrEmpty()){...
}
而python中可以直接对对象进行逻辑判断无需类型转换
message = " "
if message :pass
对象的真假值测试的结果,要么是True,要么是False
布尔类型的值只有True和False,所以对象是不管什么类型,其真假值的测试结果必然是True和False中的一个。在python中真假值的测试结果可以通过调用内置函数bool来确认。
>>> bool(' ')
True
>>> bool('')
False
以下的内置对象会被视为False值
- None
>>> bool(None)
False
- False
>>> bool(False)
False
- 任何数值类型的零,例如,0、0.0、0j
>>> bool(0),bool(0.0),bool(0j)
(False, False, False)
- 任何空序列,例如,”、()、[]
>>> bool(''),bool(()),bool([])
(False, False, False)
- 任何空映射,例如,{}
>>> bool({})
False
内置对象除了以上值之外的都是真值
常量NotImplemented、Ellipsis、True是真值
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> bool(NotImplemented)
True
>>> bool(Ellipsis)
True
>>> bool(True)
True
对于用户自定义的类,其真假值取决于该类有没有定义__bool__()
或__len__()
,以及这两个方法返回的值
如果自定义类未没有定义__bool__()
和__len__()
方法,则该类的实例对象的真假值测试总是True。
>>> class A:pass>>> a = A()
>>> bool(a)
True
如果自定义类只定义了__bool__()
方法,则该类的实例对象的真假值测试结果为__bool__()
方法返回的结果
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> class B():def __init__(self,name):self.name = namedef __bool__(self):return bool(self.name)>>> b1 = B('')
>>> bool(b1)
False
>>> b2 = B('jay')
>>> bool(b2)
True
如果自定义类只定义了__len__()
方法,则该类的实例对象的真假值测试结果为__len__()
方法返回的结果是否为整数0
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> class C():def __init__(self,name):self.name = namedef __len__(self):return len(self.name)>>> c1 = C('')
>>> bool(c1)
False
>>> c2 = C('jay')
>>> bool(c2)
True
如果自定义类同时定义了__bool__()
和__len__()
方法,则该类的实例对象的真假值测试结果为__bool__()方法返回的结果,即__bool__()
方法优先级高于__len__()
方法。
>>> class D():def __len__(self):return 1def __bool__(self):return False>>> d = D()
>>> bool(d)
False>>> class E():def __len__(self):return 0def __bool__(self):return True>>> e = E()
>>> bool(e)
True
Python基础教程:内置类型之真值测试相关推荐
- python基础教程书籍推荐-Python大神推荐给小白的36本入门书籍
Python大神推荐给小白的36本入门书籍 如果看我喜欢可以找我领取Python电子书和学习资料 1.Python编程:从入门到实践 我自己最初看的这本书,觉得非常适合入门 2.python入门经典- ...
- python基础教程书籍推荐-入门python有什么好的书籍推荐?
Python编程语言有许多语法结构.标准库函数和交互式开发环境功能.好在,你可以忽略大多数内容.你只需要学习部分内容,就能编写一些方便的小程序. 但在动手之前,你必须学习一些基本编程概念.就像魔法师培 ...
- Python基础教程(一):简介、环境搭建、中文编码
Python 基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像P ...
- python即时标记_【Python】读书笔记:Python基础教程-项目1-即时标记
功能:给文本添加HTML标记,使得到的文档能够在浏览器中显示并能作为一个网页使用. 要求: 输入不应包含人工代码或标签: 应能处理不同的块,比如标题.段落.列表项.内嵌文本(比如被强调的文本.URL等 ...
- 什么是python基础教程-python基础教程之python是什么?概念解析
Python,是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CP ...
- python黑马教程ppt_,python基础教程 PPT
python基础教程 PPT Python我这里有Python编开发,进阶,化,实战等系列视频教程,还有安装包,素材,代码内容,这里就不一一说了,全套内容一共300G左右,非常的详细,需要的请到网盘下 ...
- Python基础教程,Python入门教程
Python 是一门上手简单.功能强大.通用型的脚本编程语言.Python 类库极其丰富,这使得 Python 几乎无所不能,网站开发.软件开发.大数据分析.网络爬虫.机器学习等都不在话下. 这套 P ...
- 【Python】读书笔记:Python基础教程-项目1-即时标记
功能:给文本添加HTML标记,使得到的文档能够在浏览器中显示并能作为一个网页使用. 要求: 输入不应包含人工代码或标签: 应能处理不同的块,比如标题.段落.列表项.内嵌文本(比如被强调的文本.URL等 ...
- 《Python基础教程》学习笔记——条件、循环及其他语句
Python基础教程--条件.循环及其他语句 条件.循环及其他语句 再谈 print 和 import 打印多个参数 导入时重命名 赋值魔法 序列解包 链式赋值 增强赋值 代码块:缩进的乐趣 条件和条 ...
最新文章
- iOS 十六进制的颜色值转换为UIColor
- 解决Mac下npm权限问题
- 使用freemarker生成java文件(其他文件也可以)
- C语言 满分代码 L1-047 装睡(解题报告)
- ES6-13 正则方法、修饰符yus、UTF_16编码方式
- 如何通过Windows Server 2008 R2建立NFS存储
- STS的安装教程-鹏鹏
- python 中的 del 使用方法
- 中兴上网卡 linux,电信3G无线上网卡中兴AC2726在Ubuntu 10.10安装使用成功
- Windows操作系统下使用pip安装pygame
- php wiki搭建,wiki网站搭建
- 高清壁纸:60款可爱的圣诞节电脑桌面壁纸《中篇》
- 使用Maven前夕(Maven项目架构管理工具、配置环境变量、阿里云镜像、本地仓库)
- STM32——红外遥控器实验
- iOS定位经纬度转换
- Transformer课程 第7课Gavin BERT文本分类
- AddressBook
- 存储服务器和磁盘阵列有什么区别
- 最强GTD时间管理工具:OmniFocus Pro 3 for Mac支持big sur
- Linux 下8种优秀的屏幕录制机