Сообщить об ошибке.

Математические и побитовые функции

Арифметические и побитовые операторы для манипулирования числовыми значениями также поддерживаются модулем operator и являются самыми многочисленными.

operator.abs(obj)
operator.__abs__(obj):

Функция возвращает абсолютное значение obj.

operator.add(a, b)
operator.__add__(a, b):

Функция возвращает a + b, для чисел a и b.

operator.and_(a, b)
operator.__and__(a, b):

Функция возвращает побитовое & для a и b.

operator.floordiv(a, b)
operator.__floordiv__(a, b):

Функция возвращает a // b.

operator.index(a)
operator.__index__(a):

Функция возвращает a преобразованное в целое число. Эквивалентно a.__index__().

operator.inv(obj)
operator.invert(obj)
operator.__inv__(obj)
operator.__invert__(obj):

Функция возвращает побитовую инверсию числа obj. Функция эквивалентна операции ~obj.

Оператор побитовой инверсии (~) в bool устарел. Его использование выдаст ошибку в Python 3.14. Вместо него используйте not для отрицания логических значений. В том редком случае, когда действительно нужна побитовая инверсия базового значения int, преобразуйте в int явно: ~int(x).

operator.lshift(a, b)
operator.__lshift__(a, b):

Функция возвращает a, которая сдвигается влево b.

operator.mod(a, b)
operator.__mod__(a, b):

Функция возвращает a % b.

operator.mul(a, b)
operator.__mul__(a, b):

Функция возвращает a * b, для чисел a и b.

operator.matmul(a, b)
operator.__matmul__(a, b):

Функция возвращает a @ b.

operator.neg(obj)
operator.__neg__(obj):

Функция возвращает отрицание (-obj).

operator.or_(a, b)
operator.__or__(a, b):

Функция возвращает побитовое | для a и b.

operator.pos(obj)
operator.__pos__(obj):

Функция возвращает положительный результат (+obj).

operator.pow(a, b)
operator.__pow__(a, b):

Функция возвращает a ** b для чисел a и b.

operator.rshift(a, b)
operator.__rshift__(a, b):

Функция возвращает a сдвинутое вправо на b.

operator.sub(a, b)
operator.__sub__(a, b):

Функция возвращает a - b.

operator.truediv(a, b)
operator.__truediv__(a, b):

Функция возвращает a / b где 2/3 будет .66, а не 0. Это также называется "истинным" делением.

operator.xor(a, b)
operator.__xor__(a, b):

Функция возвращает побитовое исключение ^ для a and b.

Простой калькулятор с использованием модуля operator.

import operator

action = {
    "+": operator.add,
    "-": operator.sub,
    "/": operator.truediv,
    "*": operator.mul,
    "**": operator.pow
}

>>> action['-'](50, 25)
# 25
>>> action['+'](50, 25)
# 75
>>> action['/'](50, 25)
# 2.0
>>> action['*'](50, 25)
# 1250

Примеры использования математических и побитовых функций.

operator_math.py
from operator import *

a = -1
b = 5.0
c = 2
d = 6

print('\nPositive/Negative:')
print('abs(a):', abs(a))
print('neg(a):', neg(a))
print('neg(b):', neg(b))
print('pos(a):', pos(a))
print('pos(b):', pos(b))

print('\nArithmetic:')
print('add(a, b)     :', add(a, b))
print('floordiv(a, b):', floordiv(a, b))
print('floordiv(d, c):', floordiv(d, c))
print('mod(a, b)     :', mod(a, b))
print('mul(a, b)     :', mul(a, b))
print('pow(c, d)     :', pow(c, d))
print('sub(b, a)     :', sub(b, a))
print('truediv(a, b) :', truediv(a, b))
print('truediv(d, c) :', truediv(d, c))

print('\nBitwise:')
print('and_(c, d)  :', and_(c, d))
print('invert(c)   :', invert(c))
print('lshift(c, d):', lshift(c, d))
print('or_(c, d)   :', or_(c, d))
print('rshift(d, c):', rshift(d, c))
print('xor(c, d)   :', xor(c, d))

Результаты:

Positive/Negative:
abs(a): 1
neg(a): 1
neg(b): -5.0
pos(a): -1
pos(b): 5.0

Arithmetic:
add(a, b)     : 4.0
floordiv(a, b): -1.0
floordiv(d, c): 3
mod(a, b)     : 4.0
mul(a, b)     : -5.0
pow(c, d)     : 64
sub(b, a)     : 6.0
truediv(a, b) : -0.2
truediv(d, c) : 3.0

Bitwise:
and_(c, d)  : 2
invert(c)   : -3
lshift(c, d): 128
or_(c, d)   : 6
rshift(d, c): 1
xor(c, d)   : 4