Python运算符大全:从基础到进阶 – wiki词典

Python运算符大全:从基础到进阶

在Python编程中,运算符是执行各种操作的特殊符号或关键字。它们是程序中数据处理、逻辑判断和流程控制的基石。本文将全面深入地探讨Python中的各种运算符,从基础概念到进阶用法。

1. 算术运算符 (Arithmetic Operators)

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

运算符 描述 示例 结果
+ 加法 5 + 2 7
- 减法 5 - 2 3
* 乘法 5 * 2 10
/ 除法 5 / 2 2.5
% 取模(余数) 5 % 2 1
** 幂运算 5 ** 2 25
// 整除(地板除) 5 // 2 2

注意要点:
* 除法 (/) 总是返回一个浮点数,即使结果是整数。
* 整除 (//) 执行除法并向下取整到最接近的整数。
* 加法 (+) 和乘法 (*) 运算符也适用于字符串,分别用于字符串拼接和重复。

2. 赋值运算符 (Assignment Operators)

赋值运算符用于将值赋给变量。最基本的赋值运算符是 =。Python还提供了一系列复合赋值运算符,它们结合了算术操作和赋值。

运算符 示例 等价于
= x = 5 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

3. 比较(关系)运算符 (Comparison Operators)

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

运算符 描述 示例 结果
== 等于 5 == 5 True
!= 不等于 5 != 2 True
> 大于 5 > 2 True
< 小于 5 < 2 False
>= 大于或等于 5 >= 5 True
<= 小于或等于 5 <= 2 False

Python支持链式比较,例如 0 < x < 100,这比 x > 0 and x < 100 更简洁且Pythonic。

4. 逻辑运算符 (Logical Operators)

逻辑运算符用于组合条件语句。Python使用关键字 andornot

  • and: 如果两个操作数都为 True,则返回 True
    python
    print(True and False) # False
  • or: 如果任一操作数为 True,则返回 True
    python
    print(True or False) # True
  • not: 反转操作数的布尔值。
    python
    print(not True) # False

    短路求值 (Short-circuiting):
    andor 运算符执行短路求值。对于 and,如果第一个操作数为 False,则不再评估第二个操作数;对于 or,如果第一个操作数为 True,则不再评估第二个操作数。

5. 身份运算符 (Identity Operators)

身份运算符用于比较两个对象的内存地址,即它们是否是同一个对象。

  • is: 如果两个变量指向同一个对象,则返回 True
    python
    a = [1, 2, 3]
    b = a
    c = [1, 2, 3]
    print(a is b) # True
    print(a is c) # False (c是a的副本,内存地址不同)
  • is not: 如果两个变量不指向同一个对象,则返回 True
    python
    print(a is not c) # True

    ==is 的区别:
  • == 比较两个对象的值是否相等。
  • is 比较两个对象是否是内存中的同一个实例。

6. 成员运算符 (Membership Operators)

成员运算符用于检查序列(如字符串、列表、元组、集合或字典的键)中是否包含某个值。

  • in: 如果在序列中找到指定的值,则返回 True
    python
    my_list = [1, 2, 3, 4, 5]
    print(3 in my_list) # True
    print(6 in my_list) # False
  • not in: 如果在序列中未找到指定的值,则返回 True
    python
    print(6 not in my_list) # True

7. 位运算符 (Bitwise Operators)

位运算符直接对整数的二进制位进行操作。这些运算符通常用于底层编程、数据压缩或加密等特定场景。

运算符 描述 示例
& 按位与 a & b
| 按位或 a | b
^ 按位异或 a ^ b
~ 按位非(取反) ~a
<< 左移 a << 2
>> 右移 a >> 2

进阶主题

运算符优先级 (Operator Precedence)

当一个表达式包含多个不同类型的运算符时,运算符优先级决定了操作的执行顺序。例如,乘法和除法通常在加法和减法之前执行。可以使用括号 () 来强制改变运算顺序。

常见优先级(从高到低):
1. 括号 ()
2. 幂运算 **
3. 正负号 +x, -x
4. 乘、除、取模、整除 *, /, %, //
5. 加、减 +, -
6. 位移 <<, >>
7. 位与 &
8. 位异或 ^
9. 位或 |
10. 比较运算符 ==, !=, >, >=, <, <=
11. 身份运算符 is, is not
12. 成员运算符 in, not in
13. 逻辑非 not
14. 逻辑与 and
15. 逻辑或 or
16. 赋值运算符 =, +=, -=

理解运算符优先级对于编写正确且可预测的代码至关重要。

运算符重载 (Operator Overloading)

Python允许为自定义类重载运算符。这意味着可以定义当对类的实例使用特定运算符时,该运算符应该执行什么行为。这通过在类中实现特定的“魔术方法”(也称为“双下划线方法”或“dunder method”)来完成。

例如,要重载加法运算符 +,可以在类中定义 __add__ 方法:
“`python
class Vector:
def init(self, x, y):
self.x = x
self.y = y

def __add__(self, other):
    return Vector(self.x + other.x, self.y + other.y)

def __str__(self):
    return f"({self.x}, {self.y})"

v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2
print(v3) # 输出: (4, 6)
“`
通过重载,我们可以让自定义对象以直观的方式与运算符交互,提高代码的可读性和表达力。

总结

Python的运算符是其强大和灵活性的关键组成部分。从日常的算术和赋值,到复杂的逻辑判断和位操作,再到面向对象编程中的运算符重载,全面掌握这些工具将极大地提升你的编程能力和代码质量。在编写代码时,始终考虑运算符的类型、优先级和具体行为,以确保程序的正确性和高效性。

希望这篇文章能帮助你深入理解Python运算符的奥秘!

滚动至顶部