说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 布尔运算是处理两个对象逻辑关系的运算,在 Python 中由三个运算符 and、or、not 进行计算。
在执行布尔运算的情况下,或是当表达式被用于流程控制语句时,以下值会被解读为假值: False, None, 所有类型的数字零,以及空字符串和空容器(包括字符串、元组、列表、字典、集合与冻结集合)。 所有其他值都会被解读为真值。 用户自定义对象可通过提供 __bool__()
方法来定制其逻辑值。
运算 | 说明 |
---|---|
not x | 将在其参数 x 为假值时产生 True,否则产生 False |
x and y | 首先对 x 求值;如果 x 为假则返回该值;否则对 y 求值并返回其结果值 |
x or y | 首先对 x 求值;如果 x 为真则返回该值;否则对 y 求值并返回其结果值 |
请注意 and 和 or 都不限制其返回的值和类型必须为 False 和 True,而是返回最后被求值的操作数。 此行为是有必要的,例如假设 s 为一个当其为空时应被替换为某个默认值的字符串,表达式 s or 'foo' 将产生希望的值。 由于 not 必须创建一个新值,不论其参数为何种类型它都会返回一个布尔值(例如,not 'foo' 结果为 False 而非 ''。)
and 和 or 根据逻辑整理如下表:
a | b | and 返回 | or 返回 |
---|---|---|---|
True | True | b | a |
True | False | b | a |
False | True | a | b |
False | False | a | b |
详细介绍:
使用not对一个布尔值进行取反:
not True # False
not False # True
使用and对两个布尔值进行逻辑与运算,两值都为True才返回True:
True and True # True
True and False # False
使用or对两个布尔值进行逻辑或运算,其中一个值为True就返回True:
True or False # True
False or False # False
布尔运算遵循逻辑法则,可以组合使用形成复杂的逻辑表达式,构成程序中的条件判断和流程控制。布尔运算都是短路的,即如果可以提前确定结果,则后面的运算不再执行。布尔运算是数学和编程中表达逻辑和真值的基础,在Python中作为一等公民,可以像数字一样操作。
布尔运算通常用于流程控制语句中,这时会先对运算结果执行 bool() 逻辑检测,得到检测结果后执行流程语句。not 的优先级比其他非布尔运算符低,因此 not a==b 会被认为是 not(a==b),而 a==not b 会引发语法错误。
以下是布尔运算的一些代码示例:
a = 0
b = 1
c = 2
a and b # 0 a 为假,返回 a 的值
b and a # 0 b 为真,返回 a 的值
a or b # 1 a 为假,返回 b 的值
a and b or c # 2
a and (b or c) # 0 用括号提高运算优先级
# not 的注意事项
not a # True
not a == b # True
not (a == b) # True,同上逻辑
a == not b # !这个是错误的语法,正确写法如下:
a == (not b) # True
# and 优先级高,'a' 为真,返回 'b';'' or 'b' 返回 'b'
'' or 'a' and 'b'
# 'b'
Python 内置 bool() 函数 的作用是使用标准的真值测试过程将值转换为布尔值(True 或 False)。
更新时间:2024-06-11 15:55:49 标签:python 布尔 运算