布尔类型是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 语句的条件判断,也可以做为布尔逻辑运算符的操作数。
布尔运算符
布尔运算符用于对布尔值进行逻辑运算,包括:
and、or、notand:如果两个布尔值都为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 中,
and 和 or 运算符都是短路运算符。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 的值无需计算,从而节省了计算时间。需要注意的是,短路逻辑只适用于
and 和 or 运算符。其他逻辑运算符,如 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