布尔值与运算符
布尔值
Python2 中没有布尔值,直接用数字 0 表示 False, 用数字 1 表示 True。
Python3 中,把True
和False
定义成了关键字,但他们的本质还是 1 和 0,甚至可以和数字相加。
提示
在 Python 语言底层,会将布尔值 True
看作 1,将布尔值 False
看作 0,尽管从表面上看,True
和 1、False
和 0 是完全不同的两个值,但实际上,它们是相同的。
在 Python 语言中有一些特殊的布尔类型值为 False,例如 False、0、0.0、空值 None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空 range 对象、空迭代对象。其他情况,均为 True。
a = True
b = 3
c = a + b # c的值是:4
print(c)
print("空字符串的布尔类型的值:", bool("")) # False
print("空列表布尔类型的值:", bool([])) # False
print("None布尔类型的值:", bool(None)) # False
print("0布尔类型的值:", bool(0)) # False
print("字符串True和False转成布尔都是True:", bool("False")) # True
运算符
逻辑运算符
运算符 | 格式 | 说明 |
---|---|---|
or 逻辑或 | x or y | x 为 true,则不计算 y,直接返回 true;x 为 false,则返回 y |
and 逻辑与 | x and y | x 为 true,则返回 y 的值 x 为 false,则不计算 y,直接返回 false |
not 逻辑非 | not x | x 为 true,返回 false;x 为 false,返回 true |
a, b, c = 10, 20, 30
print((a < b) and (b < c)) # and并且 输出结果是True
print((a > b) or (b > c)) # or或者 输出结果是False
print(not (b < c)) # not非 输出结果是False
比较运算符
所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊变量True
和False
等价。
以下假设变量a为15
,变量b为30
:
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象的值是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象的值是否不相等 | (a != b) 返回 true. |
> | 大于 - 返回 x 是否大于 y | (a > b) 返回 False。 |
< | 小于 - 返回 x 是否小于 y。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回 x 是否大于等于 y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回 x 是否小于等于 y。 | (a <= b) 返回 true。 |
a = 4
print(a <= 30)
# 关系运算符可以连用
if 3 < a < 10:
print("a在3和10之间")
加法操作补充
- 数字相加
3+2
结果是5
- 字符串拼接
“3”+“2”
结果是“32”
- 列表、元组等合并
[10,20,30]+[5,10,100]
结果是[10,20,30,5,10,100]
乘法操作补充
数字相乘 3*2
结果是 6
字符串复制 “jiemei”*3
结果是 ”jiemeijiemeijiemei”
列表、元组等复制 [10,20,30]*3
结果是 [10,20,30,10,20,30,10,20,30]
增强赋值运算符(补充)
复合赋值可以让程序更加精炼,提高效率
运算符 | 描述 | 示例 | 等价于 |
---|---|---|---|
+= | 加法赋值字符串拼接 | sum += na += “sxt” | sum = sum + na = a + “sxt” |
-= | 减法赋值 | num1 -= n | num = num - n |
*= | 乘法赋值 | a *= b | a = a * b |
/= | 浮点除赋值 | a/=b | a = a / b |
//= | 整数除赋值 | a//=b | a = a//b |
%= | 取余赋值 | a%=b | a = a % b |
**= | 幂运算赋值 | a**=2 | a = a**2 |
<<= | 左移赋值 | a<<=2 | a = a<<2 |
>>= | 右移赋值 | a>>=2 | a = a>>2 |
&= | 按位与赋值 | a&=b | a = a&b |
|= | 按位或赋值 | a|=b | a=a|b |
^= | 按位异或赋值 | a^=b | a = a^b |
⚠️ 与 C 和 JAVA 不一样,Python 不支持自增(++)
和自减(--)
同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。
运算符 | 描述 |
---|---|
is | is 是判断两个标识符是不是引用同一个对象 |
is not | is not 是判断两个标识符是不是引用不同对象 |
is
与 ==
区别:
is
用于判断两个变量引用对象是否为同一个,既比较对象的地址。
==
用于判断引用变量引用对象的值是否相等,默认调用对象的 __eq__()
方法。
a = 20
b = 20
c = 30
print("a和b是同一个对象", a is b) # 执行结果:True
print("a和c是同一个对象", a is c) # 执行结果False
print("a和c不是同一个对象", a is not c) # 执行结果True
提示
is
比较两个对象的 id 值是否相等,是否指向同一个内存地址==
比较的是两个对象的内容是否相等,值是否相等is
运算符比 ==
效率高,在变量和 None 进行比较时,应该使用 is
a = 1000
b = 1000
a == b #True
a is b #命令行下是False。 文件下执行是True
c = 10
d = 10
c is d #True
成员运算符
成员运算符测试实例中包含了一系列的成员,包括字符串,列表或元组。
运算符 | 描述 |
---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False |
not in | 不在,则返回 True |
a = "python"
b = "py"
print(b in a) #True
c = [10,20,30]
print(10 not in c) #False