Python 提供了丰富的内置函数,它们是进行高效开发的基础。本文将系统性地介绍第一大类:数学运算类函数。熟练掌握这些工具,能让你的数据处理与数值计算事半功倍。
数学运算类函数总览
| 函数名 |
功能 |
基本语法 |
abs() |
求绝对值 |
abs(x) |
divmod() |
求商和余数 |
divmod(a, b) |
max() |
求最大值 |
max(iterable) 或 max(a, b, c...) |
min() |
求最小值 |
min(iterable) 或 min(a, b, c...) |
pow() |
幂运算 |
pow(x, y) 或 pow(x, y, z) |
round() |
四舍五入 |
round(number[, ndigits]) |
sum() |
求和 |
sum(iterable[, start]) |
1️⃣ abs(x) — 求绝对值
语法详解
- 参数:
x — 整数、浮点数或复数。
- 返回值:
x 的绝对值。
- 整数/浮点数:返回非负数值。
- 复数:返回模(浮点数)。
代码示例
# 整数和浮点数
print(abs(-5)) # 输出: 5
print(abs(3.14)) # 输出: 3.14
# 复数(模 = √(实部² + 虚部²))
print(abs(3+4j)) # 输出: 5.0
# 实际应用:计算两点距离
a, b = -10, 20
d = abs(abs(a) - abs(b)) #在不知道A/B的值是否都为正时 可以先把两个值都先转化成正值,再计算
print(f"距离: {d}") # 输出: 距离: 30
2️⃣ divmod(a, b) — 求商和余数
语法详解
- 参数:
a — 被除数,b — 除数(不能为0)。
- 返回值:元组
(商, 余数),即 (a // b, a % b)。
代码示例
# 基本用法
result = divmod(10, 3)
print(result) # 输出: (3, 1)
# 解包赋值
q, r = divmod(17, 5) # divmod(a, b) 得到的值的类型为tuple
print(f"17 ÷ 5 = {q} 余 {r}") # 输出: 17 ÷ 5 = 3 余 2
# 实际应用:秒数转换
total_seconds = 125
minutes, seconds = divmod(total_seconds, 60)
print(f"{total_seconds}秒 = {minutes}分{seconds}秒") # 输出: 125秒 = 2分5秒
3️⃣ max() — 求最大值
语法详解
- 调用方式:
max(iterable, *, default=None, key=None) — 对可迭代对象操作。
max(arg1, arg2, *args, key=None) — 对多个参数操作。
- 关键参数:
key:指定比较规则的函数。
default:可迭代对象为空时的返回值。
代码示例
# 方式1:多个参数
print(max(5, 10, 3)) # 输出: 10
# 方式2:可迭代对象
numbers = [45, 12, 89, 34]
print(max(numbers)) # 输出: 89
# 使用key参数
students = [
{'name': '小明', 'score': 85},
{'name': '小红', 'score': 92},
{'name': '小刚', 'score': 78}
]
top = max(students, key=lambda s: s['score'])
print(f"第一名: {top['name']}") # 输出: 第一名: 小红
在实际项目中,灵活运用 max() 和 min() 的 key 参数,配合Lambda表达式和列表推导式,是处理复杂数据筛选的常用技巧。
4️⃣ min() — 求最小值
语法详解
- 调用方式与
max() 完全相同。
- 功能相反,返回最小值。
代码示例
# 基本用法
print(min(5, 10, 3)) # 输出: 3
print(min([45, 12, 89, 34])) # 输出: 12
# 使用key参数
lowest = min(students, key=lambda s: s['score'])
print(f"最低分: {lowest['name']}") # 输出: 最低分: 小刚
# 找绝对值最小的数
numbers = [-10, 5, -3, 8, -2]
closest = min(numbers, key=abs)
print(f"最接近0的数: {closest}") # 输出: 最接近0的数: -2
5️⃣ pow() — 幂运算
语法详解
- 调用方式:
pow(x, y) — 计算 x ** y。
pow(x, y, z) — 计算 (x ** y) % z,效率更高。
- 参数要求:使用三个参数时,
z 必须为整数且不能为0。
代码示例
# 基本幂运算
print(pow(2, 3)) # 输出: 8
print(pow(5, 2)) # 输出: 25
# 带模数的幂运算
base, exp, mod = 7, 8, 13
result1 = (7 ** 8) % 13
result2 = pow(7, 8, 13) # 效率更高
print(result1, result2) # 输出: 9 9
# 实际应用:密码学中常用
print(pow(3, 200, 50)) # 输出: 1
6️⃣ round() — 四舍五入
语法详解
- 参数:
number:要处理的数字。
ndigits:保留的小数位数,默认0(返回整数)。
- 重要特性:Python 采用 银行家舍入法(round half to even),对
.5 会取最近的偶数。
代码示例
# 基本用法
print(round(3.14159)) # 输出: 3
print(round(3.14159, 2)) # 输出: 3.14
# 负数ndigits(向左四舍五入)
print(round(1234, -1)) # 输出: 1230
print(round(1264, -2)) # 输出: 1300
# ⚠️ 银行家舍入法
print(round(2.5)) # 输出: 2 (不是3!)
print(round(3.5)) # 输出: 4
print(round(2.675, 2)) # 输出: 2.67 (浮点精度问题)
# 实际应用:价格计算
price, tax_rate = 19.99, 0.0825
total = price * (1 + tax_rate)
print(f"含税价: {round(total, 2)}") # 输出: 含税价: 21.64
7️⃣ sum() — 求和
语法详解
- 参数:
iterable:可迭代对象(列表、元组等)。
start:起始值,默认为0。
- 返回值:从
start 开始累加所有元素。
代码示例
# 基本求和
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # 输出: 15
# 指定起始值
print(sum([1, 2, 3, 4, 5], 10)) # 输出: 25
# 求和范围
print(sum(range(1, 101))) # 输出: 5050
# 实际应用:计算平均值
scores = [85, 92, 78, 90, 88]
average = sum(scores) / len(scores)
print(f"平均分: {average:.2f}") # 输出: 平均分: 86.60
# 使用生成器表达式
sum_of_squares = sum(x**2 for x in numbers)
print(f"平方和: {sum_of_squares}") # 输出: 平方和: 55
核心要点速查表
| 函数 |
一句话记法 |
abs() |
求绝对值,复数也能用 |
divmod() |
一次返回商和余数 |
max() |
求最大值,还能自定义规则 |
min() |
求最小值,和 max 对着记 |
pow() |
幂运算,三个参数效率高 |
round() |
四舍五入,.5取偶要记牢 |
sum() |
求和计算,从 start 开始加 |
⚠️ 易错点提醒
round(2.5) 返回 2 不是3 — 银行家舍入法。
sum() 不能用于字符串拼接 — 请用 ‘’.join()。
divmod() 的除数不能为0。
pow(x, y, z) 的 z 必须为整数。
max() 对空序列要设置 default 参数。
掌握这些数学运算函数是写好 Python 代码的第一步。记得在编写涉及数值计算的代码时,遵循 PEP 8 等规范,能让你的代码更专业、更易维护。想了解更多 Python 核心技巧和深入探讨其他内置函数如数据类型转换等话题,可以持续关注相关技术社区的分享。