Python abs() 语法
abs() 是 Python 的一个内置函数,它用于获取某个数的绝对值。
语法:
abs(num)
说明:
参数 num 是一个数字,可以是整数、浮点数、复数、布尔值或实现了 __abs__() 魔法方法的对象。不同的类型,返回的值也有所不同。
- 如果 num 是整数,则 abs() 返回整数的绝对值。
- 如果 num 是浮点数,则 abs() 返回浮点数的绝对值。
- 如果 num 是布尔值,会隐式转换为整数的绝对值。比如 abs(True) 返回 1,abs(False) 返回 0。
- 如果 num 是自定义对象,则返回 __abs__() 方法定义的值。
注意:
- abs() 函数虽然是用于数学运算,但它并不属于 math 模块,而是 Python 的内置函数。因此在使用时,我们不需要导入 math 模块,而是直接就可以使用。
- math.fabs() 强制返回浮点数且不接受复数,而 abs() 保留原类型并支持复数。
- abs() 函数不能用于非数值类型(如字符串、列表等),否则会引发 TypeError 异常。
Python abs() 摘要
| 属于 | Python 内置函数 |
|---|---|
| 使用频率 | 高 |
| 官方文档 | 查看 |
| 相关函数 | round()、pow()、divmod() |
Python abs() 示例
接下来,我们通过几个简单的例子来讲解一下 Python abs() 函数是如何使用的。
示例 1:abs() 用于基础数值
# 整数
print(abs(-10))
# 浮点数
print(abs(-3.14))
# 布尔值(本质是 int 子类)
print(abs(True))
print(abs(False))
运行结果如下。
10
3.14
1
0
示例 2:abs() 用于复数
a = 3-4j
b = 3+0j # 实部为 3 的复数
c = 0-5j # 虚部为 -5 的复数
print(abs(a))
print(abs(b))
print(abs(c))
运行结果如下。
5.0
3.0
5.0
分析:
复数 a + bj 的模值为 √(a² + b²),结果始终为浮点数。
示例 3:abs() 的边界情况
print(abs(0))
print(abs(-0.0))
print(abs(1e100))
print(abs(-1e-300))
运行结果如下。
0
0.0
1e+100
1e-300
深入了解 abs()
如果参数对应的类内部定义了 __abs__() 的魔术方法,那么 abs(x) 的返回结果是 x.__abs__()。
示例 4:自定义 __abs__()
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __abs__(self):
return (self.x**2 + self.y**2)**0.5
v = Vector(3, 4)
print(abs(v))
运行结果如下。
5.0
abs() 实现原理
当调用 abs(obj) 时,Python 解释器会依次执行以下操作:
- 检查对象是否实现 __abs__() 方法。
- 若已实现,调用 obj.__abs__()。
- 若未实现且为数值类型(如 int、float、complex 等),执行内置绝对值计算。
- 否则,抛出 TypeError 异常。
