Python学习笔记-布尔类型与运算符
🐍

Python学习笔记-布尔类型与运算符

Tags
Computer Science
Tech
Published
January 29, 2024
Author
Shuang Tian
布尔类型是Python语言的基本数据类型之一,它表示逻辑上的真(True)和假(False)。布尔值通常用于控制流程和进行判断。

布尔值

布尔类型只有两个值:True和False。True表示真,False表示假。
布尔值可以通过以下方式创建:
定义为False的对象:None和False
值为0的数字类型:0,0.0,0j,Decimal(0),Fraction(0,1)
空的序列和集合:’’,(),[],{},set(),range(0)
Python 中任何对象都能直接进行真值测试(测试该对象的布尔类型值为 True 或者 False),用于if或者 while 语句的条件判断,也可以做为布尔逻辑运算符的操作数。

布尔运算符

布尔运算符用于对布尔值进行逻辑运算,包括:andornot
  • and:如果两个布尔值都为True,则返回True,否则返回False。
  • or:如果两个布尔值中有一个为True,则返回True,否则返回False。
  • not:对布尔值进行取反,如果为True,则返回False;如果为False,则返回True。

布尔值转换

布尔值可以转换为其他类型,例如整型和字符串。转换为整型时,True转换为1,False转换为0。例如:
int(True) #1 int(False) #0
转换为字符串时,True转换为"True",False转换为"False"。例如:
str(True) # "True" str(False) # "False"

布尔值在条件语句中的应用

布尔值广泛应用于条件语句中,例如if语句和while语句。在条件语句中,布尔值用于决定是否执行某个代码块。例如:
a = True b = False if a: print("A is True") else: print("A is False")

布尔值在函数中的应用

布尔值也可以作为函数的参数和返回值。例如:
def is_even(n): return n % 2 == 0 print(is_even(10)) # True

短路逻辑

短路逻辑(Short-circuit evaluation)是一种在计算逻辑表达式时,只计算必要的操作数的求值策略。如果第一个操作数的值足以确定表达式的值,则不会计算第二个操作数。
短路逻辑的核心思想:从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
在 Python 中,andor 运算符都是短路运算符。
and 运算符 如果第一个操作数为假,则整个表达式为假,无需计算第二个操作数。例如:
a = False b = True if a and b: print("Both a and b are True") else: print("At least one of a or b is False")
由于 a 为假,因此整个表达式 a and b 为假,无需计算 b 的值。因此,输出结果为:
At least one of a or b is False
or 运算符 如果第一个操作数为真,则整个表达式为真,无需计算第二个操作数。例如:
a = True b = False if a or b: print("At least one of a or b is True") else: print("Both a and b are False")
由于 a 为真,因此整个表达式 a or b 为真,无需计算 b 的值。因此,输出结果为:
At least one of a or b is True
短路逻辑可以提高代码的效率,因为它可以避免不必要的操作数计算。例如,在上面的示例中,如果 a 为假,则 b 的值无需计算,从而节省了计算时间。
需要注意的是,短路逻辑只适用于 andor 运算符。其他逻辑运算符,如 not==!= 等,都是非短路运算符。

运算符优先级(从高到低)

优先级
运算符
结合性
描述
1
() [] {}
从左到右
括号
2
await
从右到左
异步表达式
3
**
从右到左
幂运算
4
+ - ~
从右到左
一元运算符
5
* / % //
从左到右
乘法、除法、取余、取整除
6
+ -
从左到右
加法、减法
7
< <= > >= != ==
从左到右
比较运算符
8
in not in
从左到右
成员运算符
9
is is not
从左到右
身份运算符
10
not
从右到左
逻辑非运算符
11
and
从左到右
逻辑与运算符
12
or
从左到右
逻辑或运算符
13
if else
从右到左
条件表达式
14
lambda
从右到左
lambda 表达式
  • 相同优先级的运算符,从左到右结合。
  • 赋值运算符从右到左结合。
  • 条件表达式从右到左结合
例如:
# 幂运算优先级高于乘法 print(2 ** 3 * 4) # 输出:32 # 一元运算符优先级高于乘法 print(-2 * 3) # 输出:-6 # 括号可以改变运算符的优先级 print((2 + 3) * 4) # 输出:20