2.3 运算符详解


文章目录


前言

依次讲解了算数运算符、比较运算符、逻辑运算符、赋值运算符、成员运算符和运算符优先级等知识点。


一、算术运算符

用于基本的数学运算。

运算符 名称 示例 结果 说明
+ 5 + 3 8 数值相加,或字符串拼接
- 5 - 3 2 数值相减
* 5 * 3 15 数值相乘,或字符串重复
/ 5 / 2 2.5 总是返回浮点数
// 整除 5 // 2 2 向下取整,返回商的整数部分
% 取余 5 % 2 1 返回除法余数
** 2 ** 3 8 2的3次方

重要特性与示例:

python 复制代码
python
# 1. 除法总是返回浮点数
print(10 / 2)    # 输出:5.0  (不是5)

# 2. 整除向下取整(向负无穷方向)
print(7 // 2)    # 输出:3
print(-7 // 2)   # 输出:-4 (注意:不是-3!)

# 3. 取余运算的符号与被除数相同
print(7 % 2)     # 输出:1
print(-7 % 2)    # 输出:1 (因为 -7 = -4*2 + 1)

# 4. 字符串的加法和乘法
print("Hello" + " World")  # 输出:"Hello World"
print("Hi" * 3)            # 输出:"HiHiHi"

二、比较运算符

用于比较两个值,总是返回布尔值 (True 或 False)。

运算符 名称 示例 结果
> 大于 5 > 3 True
< 小于 5 < 3 False
>= 大于等于 5 >= 5 True
<= 小于等于 5 <= 3 False
== 等于 5 == 3 False
!= 不等于 5 != 3 True

注意点:

python 复制代码
python
# 1. == 比较值,不是对象身份
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # True (值相等)
print(a is b)  # False (不是同一个对象)

# 2. 字符串按字典序比较
print("apple" < "banana")  # True
print("A" < "a")           # True (ASCII码中大写字母在前)

# 3. 链式比较
x = 5
print(1 < x < 10)  # True (等价于 1 < x and x < 10)

三、逻辑运算符

用于组合多个条件,操作布尔值。

运算符 名称 示例 结果 说明
and 逻辑与 True and False False 两者都为真才为真
or 逻辑或 True or False True 至少一个为真就为真
not 逻辑非 not True False 取反

关键特性:短路求值

and:如果第一个表达式为False,直接返回False,不再计算第二个。

or:如果第一个表达式为True,直接返回True,不再计算第二个。

python 复制代码
python
# 1. 短路求值示例
def check():
    print("函数被调用了")
    return True

print(False and check())  # 输出:False (check()不会被执行)
print(True or check())    # 输出:True (check()不会被执行)

# 2. 返回实际值,不一定是布尔值
print(3 and 5)   # 输出:5 (and返回最后一个为真的值)
print(0 and 5)   # 输出:0 (and返回第一个为假的值)
print(3 or 5)    # 输出:3 (or返回第一个为真的值)
print(0 or 5)    # 输出:5 (or返回最后一个为假的值后的第一个真值)

四、赋值运算符

用于给变量赋值,并支持运算与赋值结合。

运算符 示例 等价于 说明
= x = 5 - 基本赋值
+= x += 3 x = x + 3 加后赋值
-= x -= 3 x = x - 3 减后赋值
*= x *= 3 x = x * 3 乘后赋值
/= x /= 3 x = x / 3 除后赋值
//= x //= 3 x = x // 3 整除后赋值
%= x %= 3 x = x % 3 取余后赋值
**= x **= 3 x = x ** 3 幂运算后赋值

示例:

python 复制代码
python
x = 10
x += 5      # x 现在是 15
x *= 2      # x 现在是 30
x %= 7      # x 现在是 2 (30 ÷ 7 = 4 余 2)

# 也适用于字符串
text = "Hello"
text += " World"  # text 现在是 "Hello World"

五、成员运算符

用于测试序列(如字符串、列表、元组、字典)中是否包含某个成员。

运算符 名称 示例 结果 说明
in 包含 "a" in "apple" True 检查元素是否在序列中
not in 不包含 "b" not in "apple" True 检查元素是否不在序列中

在不同数据类型中的应用:

python 复制代码
python
# 1. 字符串
print("lo" in "hello")    # True
print("x" not in "hello") # True

# 2. 列表
fruits = ["apple", "banana", "cherry"]
print("banana" in fruits)    # True
print("grape" not in fruits) # True

# 3. 字典 (检查键,不是值)
person = {"name": "Alice", "age": 25}
print("name" in person)      # True
print("Alice" in person)     # False (字典默认检查键)
print("Alice" in person.values())  # True (明确检查值)

# 4. 集合
numbers = {1, 2, 3, 4, 5}
print(3 in numbers)   # True

六、运算符优先级

当表达式中有多个运算符时,Python按照特定顺序计算。以下是从高到低的主要优先级:

() - 括号(最高优先级)

** - 幂运算

*、/、//、% - 乘、除、整除、取余

+、- - 加、减

<、<=、>、>=、==、!= - 比较运算符

not - 逻辑非

and - 逻辑与

or - 逻辑或(最低优先级)

记忆口诀:括号 → 幂 → 乘除 → 加减 → 比较 → 非 → 与 → 或

python 复制代码
python
# 示例
result = 2 + 3 * 4 ** 2 / 8  # 计算顺序:4**2=16 → 3*16=48 → 48/8=6 → 2+6=8
print(result)  # 输出:8.0

# 使用括号改变优先级
result2 = (2 + 3) * (4 ** 2) / 8  # 5 * 16 / 8 = 10.0
print(result2)  # 输出:10.0

相关推荐
屋顶那猫2 小时前
使用pyinstaller打包pytest项目
python·pytest
web3.08889992 小时前
接入API-自动化批量获取淘宝商品详情数据
开发语言·python
刹那间的回眸x.y2 小时前
UnitTestReport挺好用
python
世转神风-2 小时前
qt-在字符串中指定位置插入字符串
开发语言·qt
时光呀时光慢慢走2 小时前
C# WinForms 实战:MQTTS 客户端开发(与 STM32 设备通信)
开发语言·c#
码农水水2 小时前
腾讯Java面试被问:阻塞队列BlockingQueue的实现原理
java·后端·python·面试
曲幽2 小时前
Flask登录验证实战:从零构建一个基础的账号密码登录系统
python·flask·web·session·username·login
superman超哥3 小时前
仓颉类型别名的使用方法深度解析
c语言·开发语言·c++·python·仓颉
LFly_ice3 小时前
Next-4-路由导航
开发语言·前端·javascript