Python 运算符全解析

1. 引言

在 Python 编程中,运算符是用于对变量和值执行操作的特殊符号或关键字。它们是构建表达式、实现逻辑判断和进行数据计算的基础。掌握各类运算符的用法,是编写高效、清晰 Python 代码的关键一步。

本文将系统性地介绍 Python 中的五大类运算符:算数运算符赋值运算符比较运算符逻辑运算符以及其他常用运算符,并通过丰富的代码示例帮助你快速理解和应用。

2. 算数运算符

算数运算符用于执行基本的数学运算,如加、减、乘、除等。

运算符名称示例结果
+5 + 38
-5 - 32
*5 * 315
/5 / 22.5
//取整除(向下取整)5 // 22
%取模(求余数)5 % 21
**幂(乘方)5 ** 225

代码示例:

a=10b=3print(a+b)# 输出: 13print(a-b)# 输出: 7print(a*b)# 输出: 30print(a/b)# 输出: 3.3333333333333335print(a//b)# 输出: 3print(a%b)# 输出: 1print(a**b)# 输出: 1000

3. 赋值运算符

赋值运算符用于为变量赋值,或将运算结果赋值给变量。最基本的赋值运算符是=

运算符示例等价于描述
=x = 5x = 5简单赋值
+=x += 3x = x + 3加法赋值
-=x -= 3x = x - 3减法赋值
*=x *= 3x = x * 3乘法赋值
/=x /= 3x = x / 3除法赋值
//=x //= 3x = x // 3取整除赋值
%=x %= 3x = x % 3取模赋值
**=x **= 3x = x ** 3幂赋值

代码示例:

x=10x+=5# x = x + 5print(x)# 输出: 15x**=2# x = x ** 2print(x)# 输出: 225# 链式赋值a=b=c=1print(a,b,c)# 输出: 1 1 1# 多元赋值x,y,z=1,2,3print(x,y,z)# 输出: 1 2 3

4. 比较运算符

比较运算符(也称关系运算符)用于比较两个值,返回布尔值TrueFalse

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

代码示例:

a=10b=20print(a==b)# 输出: Falseprint(a!=b)# 输出: Trueprint(a>b)# 输出: Falseprint(a<b)# 输出: Trueprint(a>=10)# 输出: Trueprint(b<=20)# 输出: True# 比较运算符可以链式使用print(1<a<15)# 输出: True,等价于 (1 < a) and (a < 15)

5. 逻辑运算符

逻辑运算符用于组合条件语句,同样返回布尔值TrueFalse

运算符描述示例
and逻辑与 - 如果两个操作数都为真,则条件为真。(a > 0) and (b > 0)
or逻辑或 - 如果两个操作数中任意一个为真,则条件为真。(a > 0) or (b > 0)
not逻辑非 - 用于反转操作数的逻辑状态。not (a > 0)

真值表与短路求值:

x=Truey=Falseprint(xandy)# 输出: Falseprint(xory)# 输出: Trueprint(notx)# 输出: False# 短路求值示例defcheck():print("函数被调用了")returnTrueresult=Falseandcheck()# check() 函数不会被调用,因为第一个操作数为 Falseprint(result)# 输出: Falseresult=Trueorcheck()# check() 函数同样不会被调用,因为第一个操作数为 Trueprint(result)# 输出: True

6. 其他常用运算符

除了以上四类,Python 还提供了其他几类实用的运算符。

6.1 身份运算符

用于比较两个对象的内存地址(是否为同一个对象)。

  • is:判断两个标识符是否引用自同一个对象。
  • is not:判断两个标识符是否引用自不同对象。
a=[1,2,3]b=a c=[1,2,3]print(aisb)# 输出: True,b 是 a 的引用print(aisc)# 输出: False,值相同但对象不同print(a==c)# 输出: True,值相等

6.2 成员运算符

用于测试序列(如字符串、列表、元组、字典、集合)中是否包含指定的成员。

  • in:如果在指定的序列中找到值,则返回True
  • not in:如果在指定的序列中没有找到值,则返回True
my_list=[1,2,3,4,5]my_str="Hello, Python!"print(3inmy_list)# 输出: Trueprint(10notinmy_list)# 输出: Trueprint("Py"inmy_str)# 输出: Trueprint("Java"notinmy_str)# 输出: True

6.3 位运算符

位运算符把数字看作二进制来进行计算(日常开发中使用频率较低)。

  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位取反
  • <<:左移
  • >>:右移
a=60# 二进制:0011 1100b=13# 二进制:0000 1101print(a&b)# 输出: 12 (0000 1100)print(a|b)# 输出: 61 (0011 1101)print(a^b)# 输出: 49 (0011 0001)print(~a)# 输出: -61print(a<<2)# 输出: 240 (1111 0000)print(a>>2)# 输出: 15 (0000 1111)

7. 运算符优先级

当表达式中包含多个运算符时,Python 会按照优先级顺序进行计算。优先级高的运算符先于优先级低的运算符进行计算。

从高到低常见优先级:

  1. ()括号
  2. **指数
  3. ~+-按位取反,一元加号和减号
  4. */%//乘,除,取模,取整除
  5. +-加法,减法
  6. <<>>左移,右移
  7. &按位与
  8. ^|按位异或,按位或
  9. <=<>>=比较运算符
  10. ==!=等于,不等于
  11. =%=/=//=-=+=*=**=赋值运算符
  12. isis not身份运算符
  13. innot in成员运算符
  14. notorand逻辑运算符

建议:在编写复杂表达式时,使用括号()来明确运算顺序,这能使代码更清晰、更易读。

# 优先级示例result=10+3*2**2# 先算 2**2=4,再算 3*4=12,最后算 10+12=22print(result)# 输出: 22# 使用括号改变优先级result=(10+3)*2**2# 先算括号内 10+3=13,再算 2**2=4,最后算 13*4=52print(result)# 输出: 52

8. 总结

本文详细梳理了 Python 中的五大类运算符及其子类:

  1. 算数运算符:用于基础数学计算。
  2. 赋值运算符:用于为变量赋值或进行复合赋值。
  3. 比较运算符:用于比较值,返回布尔结果。
  4. 逻辑运算符:用于组合条件逻辑。
  5. 其他运算符:包括身份运算符、成员运算符和位运算符。

理解并熟练运用这些运算符,是构建 Python 程序逻辑的基石。在实际编码中,请时刻注意运算符的优先级,并善用括号来提升代码的可读性和准确性。