Skip to content

运算符

在 Python 中,运算符用于执行各种操作,如数学计算、比较和逻辑运算。Python 提供了多种运算符,分为几类:

  • 算术运算符:用于基本的数学运算。
  • 比较运算符:用于比较两个值。
  • 逻辑运算符:用于执行逻辑操作。
  • 位运算符:用于对整数进行位级操作。
  • 赋值运算符:用于将值赋给变量并进行操作。
  • 身份运算符:用于比较对象的内存地址。
  • 成员运算符:用于检查值是否在序列中。

1. 算术运算符

用于执行基本的数学操作。

  • 加法 (+):

    python
    a = 5 + 3  # 结果是 8
  • 减法 (-):

    python
    a = 5 - 3  # 结果是 2
  • 乘法 (*):

    python
    a = 5 * 3  # 结果是 15
  • 除法 (/):

    python
    a = 5 / 3  # 结果是 1.6666...
  • 整数除法 (//): 返回商的整数部分

    python
    a = 5 // 3  # 结果是 1
  • 取模 (%): 返回除法的余数

    python
    a = 5 % 3  # 结果是 2
  • 幂运算 (**):

    python
    a = 5 ** 3  # 结果是 125

2. 比较运算符

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

  • 等于 (==):

    python
    a = (5 == 3)  # 结果是 False
  • 不等于 (!=):

    python
    a = (5 != 3)  # 结果是 True
  • 大于 (>):

    python
    a = (5 > 3)  # 结果是 True
  • 小于 (<):

    python
    a = (5 < 3)  # 结果是 False
  • 大于等于 (>=):

    python
    a = (5 >= 3)  # 结果是 True
  • 小于等于 (<=):

    python
    a = (5 <= 3)  # 结果是 False

3. 逻辑运算符

用于执行逻辑操作,通常与布尔值配合使用。

  • (and): 如果两个操作数都为 True,结果为 True

    python
    a = (5 > 3) and (8 > 6)  # 结果是 True
  • (or): 如果任意一个操作数为 True,结果为 True

    python
    a = (5 > 3) or (8 < 6)  # 结果是 True
  • (not): 对操作数取反

    python
    a = not (5 > 3)  # 结果是 False

4. 位运算符

用于对整数进行位级别的操作。

  • 按位与 (&):

    python
    a = 5 & 3  # 结果是 1(0101 & 0011 = 0001)

    & 按位与,对应位数都是1,结果位数才是1,否则为0。

  • 按位或 (|):

    python
    a = 5 | 3  # 结果是 7(0101 | 0011 = 0111)

    | 按位或,对应位数都是0,结果位数才是0,否则为1。

  • 按位异或 (^):

    python
    a = 5 ^ 3  # 结果是 6(0101 ^ 0011 = 0110)
  • 按位取反 (~):

    python
    a = ~5  # 结果是 -6(按位取反,负数是补码表示)
  • 左移 (<<):

    python
    a = 5 << 1  # 结果是 10(0101 << 1 = 1010)

    << 左移位运算符,高位溢出舍弃,低位补0。

  • 右移 (>>):

    python
    a = 5 >> 1  # 结果是 2(0101 >> 1 = 0010)

    >> 右移位运算符,低位溢出舍弃,高位补0。

5. 赋值运算符

用于将值赋给变量,并可进行操作。

  • 赋值 (=):

    python
    a = 5
  • 加法赋值 (+=):

    python
    a = 5
    a += 3  # 相当于 a = a + 3,结果是 8
  • 减法赋值 (-=):

    python
    a = 5
    a -= 3  # 相当于 a = a - 3,结果是 2
  • 乘法赋值 (*=):

    python
    a = 5
    a *= 3  # 相当于 a = a * 3,结果是 15
  • 除法赋值 (/=):

    python
    a = 5
    a /= 3  # 相当于 a = a / 3,结果是 1.6666...
  • 取模赋值 (%=):

    python
    a = 5
    a %= 3  # 相当于 a = a % 3,结果是 2
  • 幂运算赋值 (**=):

    python
    a = 5
    a **= 3  # 相当于 a = a ** 3,结果是 125

在 Python 中赋值运算符使用 =,执行顺序从右到左执行。

  1. 支持链式赋值比如:a = b = c = 1
  2. 也支持参数赋值比如:+=-=-=/=//=%=
  3. 还支持解构赋值比如:a, b, c = 10, 20, 30
python
a = b = c = 10 # 链式调用,变量指向相同的内存地址

d, e, f = 10, 20, 30 # 解构赋值,变量指向各自的内存地址

6. 身份运算符

用于比较对象的内存地址是否相同。

  • is: 判断两个对象是否引用自同一个内存位置。

    python
    a = [1, 2, 3]
    b = a
    c = [1, 2, 3]
    print(a is b)  # True
    print(a is c)  # False
  • is not: 判断两个对象是否引用自不同的内存位置。

    python
    a = [1, 2, 3]
    b = [1, 2, 3]
    print(a is not b)  # True

7. 成员运算符

用于检查一个值是否是某个序列(如列表、字符串、元组等)的成员。

  • in: 判断值是否在序列中。

    python
    a = [1, 2, 3]
    print(2 in a)  # True
  • not in: 判断值是否不在序列中。

    python
    a = [1, 2, 3]
    print(4 not in a)  # True

运算符的优先级

一般情况,有括号先计算括号里的运算,再计算算术运算符,再算位运算,再算比较运算符,再算算布尔运算,最后算赋值。

括号 -> 算术运算符 -> 位运算符 -> 比较运算符 -> 逻辑运算符 -> 赋值运算符

python
result = 5 + 3 * 2  # 结果是 11,因为乘法优先于加法
result = (5 + 3) * 2  # 结果是 16,因为括号内的加法优先于乘法