/
Вопросы и ответы
/
Python
/

Что делает функция abs в Python?

Что делает функция abs в Python?

4 года назад

Andrey Moshkov

Ответы

16

Функция abs в Python возвращает абсолютное значение числа. Таким образом результат всегда положительный. На вход функция принимает:

  • целые числа;
  • числа с плавающей точкой;
  • комплексные числа.

Пример работы функции:

1
2
3
abs(-20) # => 20
abs(-20.5) # => 20.5
abs(3 + 4j) # => 5.0

Если в случае с целыми числами и числами с плавающей точкой при возврате функция сохраняет тип переданного числа, то в случае с комплексными числами тип меняется на число с плавающей точкой.

4 года назад

Kirill Nagorniy

2

результат всегда положительный

неотрицательный

2 года назад

0

abs(x) возвращает модуль числа — его значение без знака минус. Результат всегда неотрицательный.

1
2
3
print(abs(-7))   # => 7
print(abs(3.5))  # => 3.5
print(abs(0))    # => 0

Импортировать ничего не нужно: abs() встроена в Python.

С какими числами работает

АргументПримерРезультат
intabs(-7)7
floatabs(-2.5)2.5
complexabs(3 + 4j)5.0 — длина вектора, √(3² + 4²)
Decimalabs(Decimal("-1.5"))Decimal('1.5')
Fractionabs(Fraction(-1, 3))Fraction(1, 3)
boolabs(True)1

Тип результата совпадает с типом аргумента. Исключение — комплексные числа: для них abs() возвращает float.

Где abs нужен на практике

Расстояние между двумя числами:

1
2
a, b = 12, 30
print(abs(a - b))  # => 18

Сравнение дробных чисел с допуском:

1
2
3
x = 0.1 + 0.2
print(x == 0.3)              # => False
print(abs(x - 0.3) < 1e-9)   # => True

Для той же задачи есть готовая функция math.isclose(x, 0.3).

Сортировка и поиск по модулю:

1
2
3
nums = [-5, 3, -1]
print(sorted(nums, key=abs))  # => [-1, 3, -5]
print(min(nums, key=abs))     # => -1 — число, ближайшее к нулю

abs и math.fabs

math.fabs() всегда возвращает float и не принимает комплексные числа:

1
2
3
import math
print(abs(-7))        # => 7
print(math.fabs(-7))  # => 7.0

Если тип результата не важен, используйте abs().

Частые ошибки

1
2
abs("-5")
# TypeError: bad operand type for abs(): 'str'

input() возвращает строку. Сначала приведите её к числу: abs(int(input())).

abs() не меняет переменную. Результат нужно сохранить: x = abs(x).

Как это работает внутри

abs(x) вызывает у объекта метод __abs__. Его можно определить в своём классе:

1
2
3
4
5
6
7
8
class Vector:
    def __init__(self, x, y):
        self.x, self.y = x, y

    def __abs__(self):
        return (self.x ** 2 + self.y ** 2) ** 0.5

print(abs(Vector(3, 4)))  # => 5.0

Встроенные функции Python разбирают в бесплатном курсе «Основы Python», магические методы — на курсе «ООП на Python».

8 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845