➕ 10. 运算符大全

本章概述

学习 Python 的各种运算符:算术、比较、逻辑、赋值、位运算等。 预计学习时间:50 分钟


10.1 算术运算符

运算符说明示例结果
+3 + 25
-3 - 21
*3 * 26
/除(结果是浮点数)7 / 23.5
//整除(向下取整)7 // 23
%取余(模运算)7 % 21
**幂运算3 ** 29

详细示例

# 加减乘
print(10 + 3)   # 13
print(10 - 3)   # 7
print(10 * 3)   # 30
 
# 除法(注意:结果是浮点数)
print(10 / 3)   # 3.3333333333333335
print(9 / 3)    # 3.0(即使整除也是浮点数)
 
# 整除(向下取整)
print(10 // 3)  # 3
print(-10 // 3) # -4(注意:向下取整,不是-3!)
 
# 取余
print(10 % 3)   # 1
print(10 % 2)   # 0
 
# 幂运算
print(2 ** 3)   # 8
print(2 ** 10)  # 1024
print(9 ** 0.5) # 3.0(开平方)

整除注意

//向下取整,不是截断小数! 负数时要注意:-10 // 3 = -4,不是 -3


10.2 比较运算符

运算符说明示例结果
==等于3 == 2False
!=不等于3 != 2True
>大于3 > 2True
<小于3 < 2False
>=大于等于3 >= 3True
<=小于等于3 <= 2False

示例

a = 10
b = 20
 
print(a == b)   # False
print(a != b)   # True
print(a > b)    # False
print(a < b)    # True
print(a >= 10)  # True
print(b <= 20)  # True

连续比较(Python 特色)

Python 特色

Python 支持连续比较,其他语言大多不支持。

age = 25
 
# 判断是否在某个范围
if 18 <= age <= 30:
    print("年轻人")
 
# 等价于
if age >= 18 and age <= 30:
    print("年轻人")

10.3 逻辑运算符

运算符说明示例结果
and与(两边都为True才为True)True and FalseFalse
or或(一边为True就为True)True or FalseTrue
not非(取反)not TrueFalse

真值表

and:

ABA and B
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

or:

ABA or B
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

not:

Anot A
TrueFalse
FalseTrue

短路运算

重要!

逻辑运算符有短路特性:

  • and:左边为 False 时,右边不执行
  • or:左边为 True 时,右边不执行
# and 短路
def func():
    print("执行了")
    return True
 
False and func()  # 什么都不输出,func()没执行
True and func()   # 输出"执行了"
 
# or 短路
True or func()   # 什么都不输出,func()没执行
False or func()  # 输出"执行了"

逻辑运算符的返回值

小技巧

逻辑运算符返回的不一定是布尔值,而是决定结果的那个值

# and:返回第一个假值,都真则返回最后一个
3 and 0          # 0
3 and 5          # 5
"" and "hello"   # ""
 
# or:返回第一个真值,都假则返回最后一个
3 or 0           # 3
0 or 5           # 5
"" or "hello"    # "hello"

10.4 赋值运算符

运算符说明示例等价于
=简单赋值a = 10-
+=加等于a += 5a = a + 5
-=减等于a -= 5a = a - 5
*=乘等于a *= 5a = a * 5
/=除等于a /= 5a = a / 5
//=整除等于a //= 5a = a // 5
%=取余等于a %= 5a = a % 5
**=幂等于a **= 2a = a ** 2

示例

a = 10
 
a += 5   # a = 15
a -= 3   # a = 12
a *= 2   # a = 24
a /= 4   # a = 6.0
a //= 2  # a = 3.0
a %= 2   # a = 1.0
a **= 3  # a = 1.0

注意

Python 没有 ++-- 运算符! 要用 a += 1a = a + 1


10.5 位运算符

按二进制位进行运算。

运算符说明示例(5=0101, 3=0011)结果
&按位与5 & 31 (0001)
|按位或5 | 37 (0111)
^按位异或5 ^ 36 (0110)
~按位取反~5-6
<<左移5 << 110 (1010)
>>右移5 >> 12 (0010)

示例

a = 5   # 二进制:0101
b = 3   # 二进制:0011
 
print(a & b)   # 1(0001)
print(a | b)   # 7(0111)
print(a ^ b)   # 6(0110)
print(~a)      # -6(按位取反)
print(a << 1)  # 10(左移1位,相当于*2)
print(a >> 1)  # 2(右移1位,相当于//2)

位运算的应用

  • 左移 << n 相当于乘以 2ⁿ
  • 右移 >> n 相当于除以 2ⁿ(整除)
  • x & 1 可以判断奇偶(结果为1是奇数)
  • 位运算速度很快,性能优化时会用到

10.6 成员运算符

运算符说明示例结果
in在序列中3 in [1,2,3]True
not in不在序列中4 not in [1,2,3]True

示例

# 列表
lst = [1, 2, 3, 4, 5]
print(3 in lst)      # True
print(10 in lst)     # False
 
# 字符串
print("h" in "hello")  # True
print("abc" in "hello")  # False
 
# 字典(判断的是key)
d = {"name": "Tom", "age": 18}
print("name" in d)   # True
print("Tom" in d)    # False(判断的是key,不是value)

10.7 身份运算符

运算符说明示例
is是同一个对象(内存地址相同)a is b
is not不是同一个对象a is not b

is vs ==

重要区别

  • ==:比较是否相等
  • is:比较身份(内存地址)是否相同
a = [1, 2, 3]
b = [1, 2, 3]
 
print(a == b)   # True(值相等)
print(a is b)   # False(不是同一个对象)
 
c = a
print(a is c)   # True(是同一个对象)

什么时候用 is?

  • 判断是否为 Noneif x is None:
  • 判断是否为 True / False
  • 确认两个变量是否引用同一个对象

小整数缓存

Python 对小整数(-5 到 256)有缓存,所以:

a = 100
b = 100
print(a is b)  # True(小整数缓存)
 
a = 1000
b = 1000
print(a is b)  # False(大整数不缓存)

但不要依赖这个特性,比较值用 ==


10.8 运算符优先级

从高到低:

优先级运算符说明
1**幂运算
2~ + -按位取反、正负号
3* / // %乘除、整除、取余
4+ -加减
5<< >>位移
6&按位与
7^按位异或
8|按位或
9== != > < >= <=比较
10= += -=赋值
11is is not身份
12in not in成员
13not逻辑非
14and逻辑与
15or逻辑或

不确定就加括号

优先级记不住没关系,用括号明确顺序,既清晰又安全。


🔗 相关章节


📝 我的笔记

在这里记录你的理解、疑问和练习代码

# 你的练习代码
 

✅ 本章检查清单

  • 掌握算术运算符(特别是整除和取余)
  • 掌握比较运算符
  • 掌握逻辑运算符和短路运算
  • 掌握赋值运算符
  • 了解位运算符
  • 掌握成员运算符和身份运算符
  • 理解 is 和 == 的区别
  • 了解运算符优先级