运算符和表达式#

运算符用于对值进行各种操作。Python 提供了丰富的运算符,包括算术、比较、逻辑、赋值等。

算术运算符#

算术运算符用于执行基本的数学运算。

# 加法
result = 10 + 5        # 15

# 减法
result = 10 - 5        # 5

# 乘法
result = 10 * 5        # 50

# 除法(返回浮点数)
result = 10 / 3        # 3.3333333333333335

# 整数除法(向下取整)
result = 10 // 3       # 3

# 取余(模运算)
result = 10 % 3        # 1

# 幂运算
result = 2 ** 3        # 8(2的3次方)
result = 2 ** 0.5      # 1.4142135623730951(平方根)

# 字符串和列表的运算
"Hello" + " " + "World"  # 'Hello World'
[1, 2] + [3, 4]          # [1, 2, 3, 4]
"Hi" * 3                  # 'HiHiHi'
[1, 2] * 3                # [1, 2, 1, 2, 1, 2]

比较运算符#

比较运算符用于比较两个值,返回布尔值(TrueFalse)。

# 等于
5 == 5        # True
5 == 3        # False

# 不等于
5 != 3        # True
5 != 5        # False

# 大于
5 > 3         # True
5 > 7         # False

# 小于
3 < 5         # True
7 < 5         # False

# 大于等于
5 >= 5        # True
5 >= 7        # False

# 小于等于
5 <= 5        # True
7 <= 5        # False

# 字符串比较(按字典序)
"apple" < "banana"    # True
"cat" > "dog"         # False

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

逻辑运算符#

逻辑运算符用于组合条件表达式。

# and - 逻辑与(两个条件都为True时返回True)
True and True     # True
True and False    # False
False and False   # False

# or - 逻辑或(至少一个条件为True时返回True)
True or False     # True
False or False    # False
True or True      # True

# not - 逻辑非(取反)
not True          # False
not False         # True

# 实际应用
age = 20
has_license = True
can_drive = age >= 18 and has_license  # True

# 短路求值
# and: 如果第一个为False,不计算第二个
# or: 如果第一个为True,不计算第二个
False and print("不会执行")
True or print("不会执行")

赋值运算符#

赋值运算符用于给变量赋值。

# 基本赋值
x = 10

# 加法赋值
x += 5        # 等价于 x = x + 5,结果是 15

# 减法赋值
x -= 3        # 等价于 x = x - 3,结果是 12

# 乘法赋值
x *= 2        # 等价于 x = x * 2,结果是 24

# 除法赋值
x /= 4        # 等价于 x = x / 4,结果是 6.0

# 整数除法赋值
x //= 2        # 等价于 x = x // 2,结果是 3.0

# 取余赋值
x %= 2        # 等价于 x = x % 2,结果是 1.0

# 幂赋值
x **= 3       # 等价于 x = x ** 3,结果是 1.0

# 多重赋值
a, b = 1, 2   # a = 1, b = 2
a, b = b, a   # 交换变量值

# 链式赋值
x = y = z = 0  # x, y, z 都等于 0

身份运算符#

身份运算符用于比较两个对象的内存地址(是否是同一个对象)。

# is - 检查两个变量是否引用同一个对象
a = [1, 2, 3]
b = a
c = [1, 2, 3]

a is b        # True(a和b引用同一个对象)
a is c        # False(a和c是不同的对象)
a == c        # True(但值相同)

# is not - 检查两个变量是否不是同一个对象
a is not c    # True

# 注意:小整数和字符串可能被Python缓存
x = 256
y = 256
x is y        # True(小整数被缓存)

x = 257
y = 257
x is y        # False(大整数可能不被缓存,取决于实现)

# None 的比较应该使用 is
x = None
x is None     # True(推荐)
x == None     # True(不推荐,但也能工作)

成员运算符#

成员运算符用于检查值是否在序列中。

# in - 检查值是否在序列中
"a" in "abc"          # True
3 in [1, 2, 3]        # True
"name" in {"name": "Python"}  # True(检查键)

# not in - 检查值是否不在序列中
"d" not in "abc"      # True
4 not in [1, 2, 3]    # True

# 实际应用
fruits = ["apple", "banana", "orange"]
if "apple" in fruits:
    print("找到了苹果")

# 检查字典的键
user = {"name": "Alice", "age": 30}
if "name" in user:
    print(user["name"])

位运算符#

位运算符用于对整数进行二进制位操作。

# & - 按位与
5 & 3         # 1(二进制:101 & 011 = 001)

# | - 按位或
5 | 3         # 7(二进制:101 | 011 = 111)

# ^ - 按位异或
5 ^ 3         # 6(二进制:101 ^ 011 = 110)

# ~ - 按位取反
~5            # -6(二进制:~101 = ...11111010)

# << - 左移
5 << 1        # 10(二进制:101 << 1 = 1010,相当于乘以2)

# >> - 右移
5 >> 1        # 2(二进制:101 >> 1 = 10,相当于除以2)

# 实际应用:检查奇偶性
x = 5
if x & 1:     # 如果最后一位是1,则为奇数
    print("奇数")

运算符优先级#

当表达式中有多个运算符时,Python 按照优先级顺序计算。优先级从高到低:

  1. 括号 () - 最高优先级
  2. 幂运算 **
  3. 一元运算符 +x, -x, ~x
  4. 乘除模 *, /, //, %
  5. 加减 +, -
  6. 位移 <<, >>
  7. 按位与 &
  8. 按位异或 ^
  9. 按位或 |
  10. 比较运算符 ==, !=, <, >, <=, >=, is, is not, in, not in
  11. 逻辑非 not
  12. 逻辑与 and
  13. 逻辑或 or
  14. 赋值运算符 =, +=, -= 等 - 最低优先级
# 优先级示例
result = 2 + 3 * 4        # 14(先算乘法)
result = (2 + 3) * 4      # 20(括号优先)

result = 2 ** 3 * 4       # 32(先算幂运算)
result = 2 ** (3 * 4)     # 4096

result = not True and False   # False(not优先级高于and)
result = not (True and False) # True

# 使用括号明确优先级(推荐)
result = (a + b) * (c - d)  # 清晰明了

表达式求值顺序#

Python 从左到右求值表达式,但遵循运算符优先级。

# 从左到右求值
result = 1 + 2 + 3        # 6(先算1+2,再+3)

# 但优先级会影响顺序
result = 1 + 2 * 3        # 7(先算2*3,再+1)

# 赋值运算符从右到左
a = b = c = 10            # 先给c赋值,再给b,最后给a

条件表达式(三元运算符)#

Python 支持三元运算符,用于简洁的条件赋值。

# 语法:值1 if 条件 else 值2
x = 10
result = "正数" if x > 0 else "非正数"  # "正数"

# 等价于
if x > 0:
    result = "正数"
else:
    result = "非正数"

# 嵌套使用
x = 0
result = "正数" if x > 0 else ("零" if x == 0 else "负数")  # "零"

运算符重载#

Python 允许类重载运算符,通过定义特殊方法实现。

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def __add__(self, other):
        return Point(self.x + other.x, self.y + other.y)
    
    def __str__(self):
        return f"Point({self.x}, {self.y})"

p1 = Point(1, 2)
p2 = Point(3, 4)
p3 = p1 + p2  # 使用 + 运算符
print(p3)     # Point(4, 6)

常用表达式模式#

# 检查变量是否存在且非空
value = None
if value:  # 如果value是None、0、空字符串、空列表等,则为False
    print("有值")

# 安全的字典访问
user = {"name": "Alice"}
age = user.get("age", 0)  # 如果age不存在,返回0

# 列表非空检查
items = []
if items:  # 空列表为False
    print("列表不为空")

# 多重条件检查
age = 25
if 18 <= age <= 65:
    print("可以工作")

下一步#

掌握了运算符后,可以学习:

  1. 控制流 - 学习如何使用这些运算符控制程序流程
  2. 函数 - 学习如何封装代码逻辑