page contents

Python 这些符号,你会了吗?

写 Python 时,最容易被忽略的往往不是新语法,而是这些看起来最熟悉的符号。

attachments-2026-09-ODVBbDbN6aa209c5b5f60.png

Python 时,最容易被忽略的往往不是新语法,而是这些看起来最熟悉的符号。

///% 都和除法有关,结果却不一样;双等号和 is 都能写在判断里,问的却不是同一件事;andor 也不只是连接条件,它们还会短路并返回原来的操作数。

这些规则不难,但一旦混用,计算结果和判断逻辑就会悄悄偏离预期。

七类运算符

1. 算术运算符:计算数字。

+-*///%** 分别用于加、减、乘、普通除法、地板除法(floor division)、取余和幂运算。

print(7 + 2)   # 9
print(7 / 2)   # 3.5:普通除法
print(7 // 2)  # 3:地板除法的结果
print(7 % 2)   # 1:余数
print(2 ** 3)  # 8:幂运算,2 3 次方

/ 总是返回浮点数。

// 进行地板除法,将商向负无穷方向取整;因此 -7 // 2 的结果是 -4。若两个整数使用 //,结果是整数;只要任一操作数是浮点数,结果就是浮点数。

** 用于幂运算,即计算一个数的若干次方。

当除数为零时,///  % 都会抛出 ZeroDivisionError

2. 复合赋值运算符:计算后更新变量。

+=-=*=/=//=%=**= 表示先运算,再把结果赋回左侧变量。

count = 10
count += 1
count *= 2
print(count)  # 22

Python 没有 count++。数字使用复合赋值会得到新值;列表使用 += 通常会直接修改原列表,因此共享同一列表的变量也会看到变化。

items = ["Python"]
other = items
items += ["Java"]
print(other)  # ['Python', 'Java']

3. 比较运算符:判断大小或是否相等。

><>=<=、双等号和不等号的结果都是 True  False

score = 85
print(score >= 60)  # True
print(score == 100# False
print(score != 0)   # True

单等号用于赋值,例如 score = 85;双等号才用于比较。Python 还支持链式比较:18 <= age < 60 表示年龄同时满足两个范围条件。

age = 20

print(18 <= age < 60)           # True:年龄在 18 60 之间
print(18 <= age and age < 60)   # True:与上面的判断含义相同

4. 逻辑运算符:组合或否定条件。

and 表示并且or 表示或者not 表示取反

logged_in = True
is_member = False

print(logged_in and is_member)  # False
print(logged_in or is_member)   # True
print(not is_member)            # True,取反

and  or 会短路:结果已经确定时,右侧不会执行。它们也会返回参与计算的操作数,不一定返回布尔值;not 才一定返回布尔值。

divisor = 0
print(divisor != 0 and 10 / divisor > 2)  # False:避免执行右侧除法
print("" or "游客")  # 游客

前端开发者注意:Python 不支持 JavaScript  &&||!。逻辑与、逻辑或、逻辑非分别写成 andornot

5. 成员运算符:检查内容是否存在。

in  not in 用于判断一个成员是否在另一个对象中。

print("Py" in "Python")                 # True:字符串查连续子串
print("Python" in ["Python""Java"])   # True:列表查完整元素
print("name" in {"name""小明"})        # True:字典默认查键

字符串查找区分大小写。列表不会自动进入元素内部继续查找,所以 "Py" in ["Python"] 的结果是 False

6. 身份运算符:判断是不是同一个对象。

is  is not 判断两个变量是否引用同一个对象;双等号判断的是内容是否相等。

a = [12]
b = [12]
c = a

print(a == b)  # True:内容相等
print(a is b)  # False:不是同一个列表
print(a is c)  # True:引用同一个列表

is 最常用来判断 None,例如 value is None。比较数字、字符串、列表内容时,使用双等号,不要依赖对象身份。

7. 位运算符:按二进制位计算整数。

按位与、按位或、异或、取反、左移和右移分别处理整数二进制表示中的每一位。

print(5 & 3)   # 1:按位与
print(5 | 3)   # 7:按位或
print(5 ^ 3)   # 6:按位异或
print(~5)      # -6:按位取反
print(5 << 1)  # 10:左移一位
print(5 >> 1)  # 2:右移一位

位运算用于权限标记、状态掩码等场景。&  | 不能代替 and  or:前者处理二进制位,后者处理真假条件并支持短路。

高频混淆点

普通除法和地板除法7 / 2 得到 3.57 // 2 得到 3-7 // 2 得到 -4

幂运算和异或:幂运算使用 2 ** 32 ^ 3 是二进制异或,结果为 1

赋值、相等和身份x = 1 用来赋值;x == 1 比较内容;x is None 判断是否为 None

逻辑与位运算andor 用于条件;&| 用于整数位操作。

默认值回退value or 30 会把 0False、空字符串也替换掉。只想替换 None 时,使用 30 if value is None else value

优先级不明确时加括号not 高于 andand 高于 or;表达式混合时应主动加括号。

logged_in = False
has_coupon = True

print(logged_in and has_coupon or True)     # True
print(logged_in and (has_coupon or True))   # False

综合示例

下面的分页函数使用算术、比较、逻辑和复合赋值运算符:先校验输入,再计算总页数。

def calculate_pages(total, page_size):
    if total < 0 or page_size <= 0:
        raise ValueError("总条数不能为负,每页条数必须大于零")

    pages = total // page_size
    if total % page_size != 0:
        pages += 1

    return pages


print(calculate_pages(235))  # 5
print(calculate_pages(205))  # 4
print(calculate_pages(05))   # 0

or 连接两个非法条件;// 得到整页数;% 检查是否有剩余条目;不等号判断是否需要补一页;+= 更新最终页数。

使用准则

需要计算数值时,用算术运算符;需要更新变量时,用复合赋值。

需要得到真假结果时,用比较、成员或身份运算符。

需要组合条件时,用 andornot;需要检查 None 时,用 is None

位运算只用于整数的二进制位处理;复杂表达式通过括号明确计算顺序。

 更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-09-10 09:37
  • 阅读 ( 29 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2420 篇文章

作家榜 »

  1. Pack 2420 文章
  2. 轩辕小不懂 2403 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 216 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章