Python abs() 函数

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 解释器会依次执行以下操作:

  1. 检查对象是否实现 __abs__() 方法。
  2. 若已实现,调用 obj.__abs__()。
  3. 若未实现且为数值类型(如 int、float、complex 等),执行内置绝对值计算。
  4. 否则,抛出 TypeError 异常。

上一篇: repr()

下一篇: round()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号