📅  最后修改于: 2023-12-03 15:27:36.401000             🧑  作者: Mango
Python中有一个内置函数叫作abs()
,它能够返回一个数的绝对值。
abs(number)
参数:
number
:要求绝对值的数。参数可以是整数、浮点数或者具有__abs__()
方法的任意Python对象。返回值:
number
绝对值的数。示例:
>>> abs(-1)
1
>>> abs(2.5)
2.5
abs()
函数使用了__abs__()
方法。Python中所有的内置数字类型都实现了该方法,因此这些对象都可以被传入abs()
中。如果number
参数是一个自定义对象,则该对象必须实现自己的__abs__()
方法以支持abs()
函数。
以下是Python中数字类型内置的__abs__()
方法的实现:
class int(int):
...
def __abs__(self):
if self >= 0:
return self
else:
return -self
class float(float):
...
def __abs__(self):
if self >= 0.0:
return self
else:
return -self
class complex(complex):
...
def __abs__(self):
return math.sqrt(self.real**2 + self.imag**2)
像int
和float
这样的原生数字类型有一个很简单的实现。如果数字为非负数,则返回该数字;否则返回其相反数。
而复数类型的__abs__()
方法则计算距离点(0, 0)
的欧几里得距离。这里计算欧几里得距离简化版的平方形式(code block):
def __abs__(self):
return self.real**2 + self.imag**2
abs()
函数和__abs__()
方法是Python中非常重要的一部分。他们可以处理各种不同类型的数字,并且可以让我们从数字中抽出大小/距离信息。该函数和方法的行为简单而明确,可大幅提高代码的可读性和可维护性。