Python 1-08 bool NoneType

一、布尔类型(bool)

在 Python 语言中,布尔类型只有两个值,True 与 False 是 int 的子类型。

>>> True   # True
>>> False  # False
>>> 3 > 2  # True
>>> 3 > 5  # False
>>> 3 in [1,2,3]  #    True
>>> 3 == 9/3      #  True
>>> 3 is "3"      #  False

为什么 3 is “3” 是错误的呢?因为一个是整数一个是字符串,is 运算符比较的是对象,当然是错误的。

Python 内置的 bool() 函数

>>> bool(1) #   True
>>> bool(0) #  False
>>> bool([]) # False
>>> bool(()) # False
>>> bool({}) # False
>>> bool(-1) # True
>>> bool('') #   False
>>> bool("False") #  True
>>> bool("True") #   True
>>> bool(0.0) #    False
>>> bool(1.0) #    True
>>> bool(-0.0) #   False

0、0.0、-0.0、空字符串、空列表、空元组、空字典,这些都被判定为False。而 -1、“False” 也被判断为 True。

布尔类型可以进行 and、or 和 not 运算。

and 运算是与运算,只有所有都为 True,and 运算的结果才是 True:

>>> True and True # True
>>> True and False #   False
>>> False and False #  False
>>> 5 > 3 and 3 > 1  #   True

or 运算是或运算,只要其中有一个为 True,or 运算结果就是True:

>>> True or True #  True
>>> True or False #    True
>>> False or False #   False
>>> 5 > 3 or 1 > 3 # True

not 运算是非运算,它是单目运算符,把 True 变成 False,False 变成 True:

>>> not True #  False
>>> not False #    True
>>> not 1 > 2 # True

再开下脑洞,布尔类型还能做别的运算吗?试试就知道了!

>>> True > False #   True
>>> True < False #  False
>>> True >= False #    True
>>> True - 1      #    0
>>> True + 1      #   2
>>> True * 3      #    3
>>> False - 1     #    -1

真的可以!比较运算,四则运算都没有问题。并且在做四则运算的时候,明显把 True 看做 1,False 看做 0。

二、空值类型(NoneType)

空值是 Python 里一个特殊的值,用 None 表示(首字母大写)。None 不能理解为 0,因为 0 是整数类型,而 None 是一个特殊的值。None 也不是布尔类型,而是 NoneType

>>> bool(None) #    False
>>> type(None) #   <class 'NoneType'>

我们平时最容易犯的错误就是获得了一个 None 值,却对它进行各种方法调用,例如:

list1 = ["a", "b", None]
for char in list1:print(char.join("A"))

内置常量
有少数的常量存在于内置命名空间中。 它们是:

False    bool 类型的假值。 给 False 赋值是非法的并会引发 SyntaxError。
True    bool 类型的真值。 给 True 赋值是非法的并会引发 SyntaxError。
None    NoneType 类型的唯一值。 **None 经常用于表示缺少值**,当因为默认参数未传递给函数时。 给 None 赋值是非法的并会引发 SyntaxError。

逻辑值检测
任何对象都可以进行逻辑值的检测,以便在 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 总是返回其中一个操作数。)

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

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

x or y       if x is false, then y, else x               (1)
x and y     if x is false, then x, else y               (2)
not x       if x is false, then True, else False        (3)

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

练习 参见 Python 1-05 数字 练习

Python 1-08 bool NoneType相关推荐

  1. python进阶08并发之四map, apply, map_async, apply_async差异

    原创博客地址: python进阶08并发之四map, apply, map_async, apply_async差异 差异矩阵 python封装了4种常用方法,用于实现并发 其差异如下   Multi ...

  2. Python 布尔类型 bool

    python 中布尔值使用常量True 和 False来表示:注意大小写 比较运算符< > ==等返回的类型就是bool类型:布尔类型通常在 if 和 while 语句中应用 这边需要注意 ...

  3. 【自学Python】Python布尔型(bool)

    Python布尔型(bool) Python布尔型(bool)教程 Python 布尔类型也叫 bool 类型,Python 布尔类型取值为 True 和 False.Python bool 类型的 ...

  4. python 取反_利用python怎么对bool布尔值进行取反

    利用python怎么对bool布尔值进行取反 发布时间:2020-12-14 14:49:17 来源:亿速云 阅读:71 这期内容当中小编将会给大家带来有关利用python怎么对bool布尔值进行取反 ...

  5. python中nonetype指什么_关于python:什么是’NoneType’对象?

    当我运行python脚本时,我得到了这个错误: TypeError: cannot concatenate 'str' and 'NoneType' objects 我很确定"str&quo ...

  6. python 布尔值 bool( ) 与逻辑运算符

    逻辑运算符 notandor 运算符优先级 not > and >or printer(x or y) x为非零,则返回x,否则返回y 学习python中有什么不懂的地方,小编这里推荐加小 ...

  7. python中布尔型的值_在python中对于bool布尔值的取反操作

    背景 根据公司业务的需求,需要做一个对于mysql数据库的大批量更新.脚本嘛也是干干单单.使用了redis的队列做缓存,可以异步并发的多任务进行更新. 有点难受的地方在于,请求访问时,因为一些网速,速 ...

  8. python numpy中bool变量转为1或0

    三种方式: 第一种方式:后面添加 .astype(int), 示例 import numpy as np a = np.array([0.5,0.4,0.6]) print((a>0.5).as ...

  9. python day003_int/str/bool/for循环

    编码     1. 最早的计算机编码是ASCII. 美国人创建的. 包含了英文字母(大写字母, 小写字母). 数字, 标点等特殊字符!@#$%      128个码位 2**7 在此基础上加了一位 2 ...

最新文章

  1. [Spring实战系列](5)Spring应用上下文
  2. AI部署:聊一聊深度学习中的模型权重
  3. spring-aop-01
  4. Video.js实现rtmp视频播放
  5. java rsa 验_Java使用RSA加密解密签名及校验
  6. php mysql rpm包_MYSQL RPM包安装
  7. 堪比整容!学会这些可视化技巧,让你的图表分分钟高级起来
  8. android 加载系统私有库,Android 搭建私有maven仓库及上传项目
  9. Android Sqite数据库 11
  10. VMware centos7配置以及SecureCRT连接
  11. 2019年中国航空三字代码对照表完全汇总
  12. Python可视化——随机漫步
  13. java微信公众号短信验证码_解决微信端公众号网页获取短信验证码ajax重复调用两次的问题...
  14. 鸿合一体机触屏没反应怎么办_电脑一体机触摸屏没反应 触摸屏电脑一体机常见故障解决方法...
  15. 用python计算准确率_Python下的scikit-learn预测准确率计算(代码实例)
  16. 一个高性能无锁非阻塞链表队列
  17. “烫烫烫烫烫烫烫烫烫烫烫烫烫...
  18. 代码应用jFinal+AngularJs未来javaEE开发的趋势——程序员的福音
  19. Web基础与apache讲解与搭建
  20. 打字不会学计算机,电脑打字基础知识、打字指法,不会的快来看哦!

热门文章

  1. 高通要求苹果就专利侵权支付3100万美元赔偿金
  2. ORACLE数据库ORA-00257解决
  3. yolov7使用onnx推理(带不带NMS)
  4. java如何获取单框的值_javaWeb获取文本框的值
  5. C语言查表法实现CRC-16计算
  6. 米莱狄的机器人是_米莱狄胜率狂飙登顶,无视兵线强拆基地,这波增强简直100分!...
  7. 学生网站模板 品优购 (3页) HTML+CSS+JavaScript 大学生网购网页作品商城网页设计作业模板 学生网页制作源代码下载
  8. 高端智能电视派系之争:华为小米、三星索尼、海信创维
  9. JAVA重点类 多线程Thread 创建 生命周期 同步
  10. 双向数据绑定原理(Vue)