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基础教程:内置类型之真值测试相关推荐

  1. python基础教程书籍推荐-Python大神推荐给小白的36本入门书籍

    Python大神推荐给小白的36本入门书籍 如果看我喜欢可以找我领取Python电子书和学习资料 1.Python编程:从入门到实践 我自己最初看的这本书,觉得非常适合入门 2.python入门经典- ...

  2. python基础教程书籍推荐-入门python有什么好的书籍推荐?

    Python编程语言有许多语法结构.标准库函数和交互式开发环境功能.好在,你可以忽略大多数内容.你只需要学习部分内容,就能编写一些方便的小程序. 但在动手之前,你必须学习一些基本编程概念.就像魔法师培 ...

  3. Python基础教程(一):简介、环境搭建、中文编码

    Python 基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像P ...

  4. python即时标记_【Python】读书笔记:Python基础教程-项目1-即时标记

    功能:给文本添加HTML标记,使得到的文档能够在浏览器中显示并能作为一个网页使用. 要求: 输入不应包含人工代码或标签: 应能处理不同的块,比如标题.段落.列表项.内嵌文本(比如被强调的文本.URL等 ...

  5. 什么是python基础教程-python基础教程之python是什么?概念解析

    Python,是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CP ...

  6. python黑马教程ppt_,python基础教程 PPT

    python基础教程 PPT Python我这里有Python编开发,进阶,化,实战等系列视频教程,还有安装包,素材,代码内容,这里就不一一说了,全套内容一共300G左右,非常的详细,需要的请到网盘下 ...

  7. Python基础教程,Python入门教程

    Python 是一门上手简单.功能强大.通用型的脚本编程语言.Python 类库极其丰富,这使得 Python 几乎无所不能,网站开发.软件开发.大数据分析.网络爬虫.机器学习等都不在话下. 这套 P ...

  8. 【Python】读书笔记:Python基础教程-项目1-即时标记

    功能:给文本添加HTML标记,使得到的文档能够在浏览器中显示并能作为一个网页使用. 要求: 输入不应包含人工代码或标签: 应能处理不同的块,比如标题.段落.列表项.内嵌文本(比如被强调的文本.URL等 ...

  9. 《Python基础教程》学习笔记——条件、循环及其他语句

    Python基础教程--条件.循环及其他语句 条件.循环及其他语句 再谈 print 和 import 打印多个参数 导入时重命名 赋值魔法 序列解包 链式赋值 增强赋值 代码块:缩进的乐趣 条件和条 ...

最新文章

  1. iOS 十六进制的颜色值转换为UIColor
  2. 解决Mac下npm权限问题
  3. 使用freemarker生成java文件(其他文件也可以)
  4. C语言 满分代码 L1-047 装睡(解题报告)
  5. ES6-13 正则方法、修饰符yus、UTF_16编码方式
  6. 如何通过Windows Server 2008 R2建立NFS存储
  7. STS的安装教程-鹏鹏
  8. python 中的 del 使用方法
  9. 中兴上网卡 linux,电信3G无线上网卡中兴AC2726在Ubuntu 10.10安装使用成功
  10. Windows操作系统下使用pip安装pygame
  11. php wiki搭建,wiki网站搭建
  12. 高清壁纸:60款可爱的圣诞节电脑桌面壁纸《中篇》
  13. 使用Maven前夕(Maven项目架构管理工具、配置环境变量、阿里云镜像、本地仓库)
  14. STM32——红外遥控器实验
  15. iOS定位经纬度转换
  16. Transformer课程 第7课Gavin BERT文本分类
  17. AddressBook
  18. 存储服务器和磁盘阵列有什么区别
  19. 最强GTD时间管理工具:OmniFocus Pro 3 for Mac支持big sur
  20. Linux 下8种优秀的屏幕录制机

热门文章

  1. 精读《手写 SQL 编译器 - 文法介绍》
  2. Java里面获取当前服务器的IP地址
  3. 如何解决python3.5.2安装scrapy的无法查找到vsvarall的问题
  4. Solr集群搭建,zookeeper集群搭建,Solr分片管理,Solr集群下的DataImport,分词配置。...
  5. 《转》python学习--基础上
  6. Objective-c(1)
  7. golang 位操作
  8. 基础才是重中之重~方法override详解
  9. 【Python 爬虫】 2、HTTP基本原理
  10. 【MM模块】Contract 采购合同简介