Abs: примеры (PYTHON)
abs(x: int or float or complex): int or float or complexОписание функции abs
Функция abs() возвращает абсолютное значение (модуль) переданного числа. Абсолютным значением считается расстояние от нуля до числа, всегда неотрицательное.
Использование функции актуально в математических расчетах, анализе данных, графике и обработке сигналов, где требуется игнорировать знак величины.
Синтаксис функции: abs(x).
Аргументы:
x- обязательный аргумент. Может быть целым числом (int), числом с плавающей точкой (float), комплексным числом (complex) или объектом, реализующим метод__abs__().
Возвращаемые значения:
- Для целых и вещественных чисел - неотрицательное число того же типа (
intилиfloat). - Для комплексных чисел - модуль числа в виде вещественного числа (
float). Модуль комплексного числаa + bjвычисляется как квадратный корень изa² + b². - Для объектов, реализующих
__abs__, - результат вызова этого метода.
Примеры использования
Простой пример с целым числом:
print(abs(-5))5
Пример с вещественным числом:
print(abs(-12.75))12.75
Пример с нулем:
print(abs(0))0
Пример с комплексным числом:
print(abs(3 + 4j))5.0
Похожие функции в Python
math.fabs(): всегда возвращает значение с плавающей точкой (float). Не работает с комплексными числами. В основном используется в математических модулях для гарантии вещественного результата.
import math
print(math.fabs(-7))7.0
numpy.abs() / numpy.absolute(): функции из библиотеки NumPy, работают с массивами и поддерживают больше типов данных. Эффективны для векторных операций.
import numpy as np
print(np.abs([-1, -2.5, 3]))[1. 2.5 3. ]
Выбор функции:
Аналоги функции в других языках
PHP: функция abs() работает с целыми и вещественными числами, но не поддерживает комплексные.
echo abs(-4.2);4.2
JavaScript: метод Math.abs() работает только с числами.
console.log(Math.abs(-3));3
Java: методы Math.abs() для целых и вещественных типов. Может вернуть отрицательное значение для Integer.MIN_VALUE из-за переполнения.
Math.abs(-10);10
SQL: функция ABS() работает с числовыми столбцами.
SELECT ABS(-123.45);123.45
C#: метод Math.Abs() с перегрузками для разных числовых типов.
Math.Abs(-5.5);5.5
Lua: функция math.abs() для целых и вещественных чисел.
math.abs(-11)11
Go: функция math.Abs() из пакета math для float64. Для других типов есть math.Abs в math/cmplx для комплексных чисел.
import "math"
math.Abs(-8.3)8.3
Kotlin: методы abs() для числовых типов и absoluteValue для Int, Long, Float, Double.
(-9).absoluteValue9
Типичные ошибки
Передача нечислового аргумента:
abs("строка")TypeError: bad operand type for abs(): 'str'
Попытка использования с типами, не поддерживающими модуль:
abs([1, 2])TypeError: bad operand type for abs(): 'list'
Ожидание целого результата для вещественных чисел:
result = abs(-3.14)
type(result)<class 'float'>
Ошибки при переопределении __abs__ в пользовательских классах:
class Example:
def __abs__(self):
return "не число"
abs(Example())TypeError: abs() должен возвращать 'int', 'float' или 'complex', а не 'str'
Изменения в последних версиях
В Python 3.10 и более поздних версиях ошибки типа для функции abs() стали более информативными, указывая ожидаемый и фактический тип.
Изменений в поведении или синтаксисе функции abs() в последних основных версиях Python не было. Функция остается стабильной и обратно совместимой.
Расширенные примеры
Использование в математических выражениях:
a, b = -10, 3
distance = abs(a - b)
print(distance)13
Фильтрация данных по абсолютному значению:
numbers = [-5, 2, -8, 1, -3]
filtered = [x for x in numbers if abs(x) > 3]
print(filtered)[-5, -8]
Сортировка по абсолютной величине:
numbers = [-5, 2, -8, 1, -3]
sorted_numbers = sorted(numbers, key=abs)
print(sorted_numbers)[1, 2, -3, -5, -8]
Вычисление модуля комплексного числа с проверкой:
z = 1 + 1j
modulus = abs(z)
print(f"Модуль {z} равен {modulus:.2f}")Модуль (1+1j) равен 1.41
Создание класса с поддержкой функции 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
Использование в лямбда-функциях:
points = [(-2, 4), (1, -1), (0, 5)]
sorted_points = sorted(points, key=lambda p: abs(p[0]) + abs(p[1]))
print(sorted_points)[(1, -1), (-2, 4), (0, 5)]
Обработка смешанных типов данных:
mixed = [3, -4.7, 2+3j, -10]
abs_values = [abs(item) for item in mixed]
print(abs_values)[3, 4.7, 3.605551275463989, 10]