Python运算符详解:从算术到身份判断的完整指南
本文系统介绍Python中的各类运算符,涵盖算术、关系、赋值、逻辑、成员、身份及三目运算符。重点解析divmod用法、浮点数精度问题及decimal模块解决方案,并深入对比is与==的区别,帮助开发者准确掌握表达式编写与优先级规则。
前言
Python中的运算符体系丰富,主要包含算术、关系(比较)、赋值、逻辑、成员、身份以及三目运算符。所谓表达式,即通过运算符将不同类型的数据按照特定规则连接而成的式子。下文将逐一介绍这些常用运算符的具体用法。
算术运算符
| 运算符 | 描述 |
|---|---|
| + | 两个数相加两个数相加,或是字符串连接 |
| - | 两个数相减 |
| * | 两个数相乘,或是返回一个重复若干次的字符串 |
| / | 两个数相除,结果为浮点数 |
| % | 取模,返回两个数相除的余数 |
| // | 两个数相除,返回商的整数部分 |
| ** | 幂运算,返回乘方结果 |
print(1 + 2) # 3
print(2 - 1) # 1
print(2 * 3) # 6
print(3 / 2) # 1.5
print(6 % 5) # 1
print(8 // 2) # 4
print(3 ** 2) # 9
若需同时获取除法运算的商和余数,可使用divmod函数。
该函数的返回值是一个元组,格式为(x//y, x%y),分别对应整数商和余数。
print(divmod(10,3)) # (3,1)
受浮点数精度限制,Python在进行某些浮点运算时可能出现微小误差。
print(0.1+0.1+0.1-0.3) # 5.551115123125783e-17
解决此类精度问题的方法是导入decimal模块,利用其高精度特性进行计算。
from decimal import Decimal
# 计算结果:0.0
print(Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3'))
关系运算符
| 运算符 | 描述 |
|---|---|
| == | 比较对象是否相等 |
| != | 比较对象是否不相等 |
| > | 大于,例如a>b,将比较a与b的大小,a>b返回True,否则返回False |
| < | 小于,例如a<b,将比较a与b的大小,a<b返回True,否则返回False |
| >= | 大于等于,例如a>=b,将比较a与b的大小,a>=b返回True,否则返回False |
| <= | 小于等于,例如a<=b,将比较a与b的大小,a<=b返回True,否则返回False |
a = 10
b = 20
print(a == b) # False
print(a != b) # True
print(a > b) # False
print(a < b) # True
print(a >= b) # False
print(a <= b) # True
关系运算符的返回值类型为布尔值(bool)。
print(True == 1) # True
print(False == 0) # True
==用于比较数值是否相等,需注意int与str类型不能直接通过此运算符比较。
print(2.0 == 2) # True
print('2' == 2) # False
字符串之间的比较基于ASCII值进行逐字符比对。
# True
print('abc' < 'xyz') # 97 98 99 < 120 121 122
Python解释器支持连续比较语法,其机制是将多个比较条件组合处理。
print(3 > 2 > 1) # True
print(3 > 2 > 2) # False
print((3 > 2) > 1) # False
| 运算符 | 描述 |
|---|---|
| = | 常规赋值运算符,将运算结果赋值给变量 |
| += | 加法赋值运算符,例如 a+=b 等效于 a=a+b |
| -= | 减法赋值运算符,例如 a-=b 等效于 a=a-b |
| *= | 乘法法赋值运算符,例如 a*=b 等效于 a=a*b |
| /= | 除法赋值运算符,例如 a/=b 等效于 a=a/b |
| //= | 取整除赋值运算符,例如 a//=b 等效于 a=a//b |
| %= | 取模赋值运算符,例如 a%=b 等效于 a=a%b |
| **= | 幂运算赋值运算符,例如 a**=b 等效于 a=a*b |
a = 1 # 将等号右边 赋值 等号左边
a = a + 1 # 先等号右边计算 再赋值给 等号左边
a += 1 # a = a + 1
逻辑运算符
| 运算符 | 描述 |
|---|---|
| and | 与运算,如果a 为False,a and b返回False 否则返回y的计算值 |
| or | 或运算,如果a非0,返回a的值,否则返回b的值 |
| not | 非运算,如果a为True,返回False,如果a为False,返回True |
a = 10
b = 20
print(a and b) # 20
print(a or b) # 10
print(not a) # False
a and b:仅当a和b均为True时,结果才为True。
a or b:只要a或b中有一个为True,结果即为True。
逻辑运算遵循短路(懒惰)求值原则。
对于and运算符,若遇到第一个False则立即返回,不再计算后续表达式;对于or运算符,若遇到第一个True则立即返回,不再计算后续表达式。
成员运算符
| 运算符 | 描述 |
|---|---|
| in | 如果在指定的序列中找到值返回True,否则返回False |
| not in | 如果在指定的序列中找到值返回True,否则返回False |
list1 = [1, 2, 3, 4, 5]
a = 1
if a in list1:
print("a是list1的元素之一")
else:
print("a不是list1的元素")
身份运算符
| 运算符 | 描述 |
|---|---|
| is | 判断两个标识符是不是引用自一个对象 |
| is not判断两个标识符是不是引用自不同对象 |
is与比较运算符==存在本质区别。
is用于判断两个变量是否引用自同一个内存对象(可通过id()函数查看内存地址),而==用于判断两个变量的值是否相等。
a = [1, 2, 3]
b = [1, 2, 3]
# 可通过id()查看内存地址
print(id(a)) # 2042443551304
print(id(b)) # 2042443551816
print(a is b) # False
print(a == b) # True
a = 2
b = 2.0
# 可通过id()查看内存地址
print(id(a)) # 140722443350320
print(id(b)) # 2336678499216
print(a is b) # False
print(a == b) # True
三目运算符
三目运算符的语法格式为:True_statements if expression else False_statements。
a = 1
b = 2
# a+b不大于3执行后面的else语句 b-a = 1
print(a+b if a+b>3 else b-a)
运算符优先级
| 运算符 | 描述 |
|---|---|
| ** | 指数(最高优先级) |
| */%// | 乘,除,取模和取整除 |
| ± | 加法减法 |
| <= >= | 比较运算符 |
| == != | 等于运算符 |
| = %= 、= 、、=-= += *= **= | 赋值运算符 |
| is is not | 身份运算符 |
| in not in | 成员运算符 |
| not or and | 逻辑运算符 |
总结
至此,关于Python常见运算符及其用法的介绍已完毕。如需了解更多相关内容,建议搜索本站历史文章或继续浏览后续内容,感谢支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









