Модуль operator в Python3

В Python 2.x используйтеcmp()функцию для сравнения соотношения размеров двух списков, чисел, строк и т. д.

В Python 3.X больше нетcmp()функции. Если вам нужно реализовать функциональность сравнения, необходимо импортироватьoperatorмодуль, который подходит для любого объекта и включает следующие методы:

Методы, содержащиеся в модуле operator

operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)
operator.ge(a, b)
operator.gt(a, b)
operator.__lt__(a, b)
operator.__le__(a, b)
operator.__eq__(a, b)
operator.__ne__(a, b)
operator.__ge__(a, b)
operator.__gt__(a, b)

operator.lt(a, b)иa < bто же, что,operator.le(a, b)иa <= bто же, что,operator.eq(a, b)иa == bто же, что,operator.ne(a, b)иa != bто же, что,operator.gt(a, b)иa > bто же, что,operator.ge(a, b)иa >= bто же, что.

Пример

# Импорт модуля operator
import operator
 
# Числа
x = 10
y = 20

print("x:",x, ", y:",y)
print("operator.lt(x,y): ", operator.lt(x,y))
print("operator.gt(y,x): ", operator.gt(y,x))
print("operator.eq(x,x): ", operator.eq(x,x))
print("operator.ne(y,y): ", operator.ne(y,y))
print("operator.le(x,y): ", operator.le(x,y))
print("operator.ge(y,x): ", operator.ge(y,x))
print()

# Строки
x = "Google"
y = "Example"

print("x:",x, ", y:",y)
print("operator.lt(x,y): ", operator.lt(x,y))
print("operator.gt(y,x): ", operator.gt(y,x))
print("operator.eq(x,x): ", operator.eq(x,x))
print("operator.ne(y,y): ", operator.ne(y,y))
print("operator.le(x,y): ", operator.le(x,y))
print("operator.ge(y,x): ", operator.ge(y,x))
print()

# Проверить возвращаемое значение
print("type((operator.lt(x,y)): ", type(operator.lt(x,y)))

Вывод вышеприведённого кода:

x: 10 , y: 20
operator.lt(x,y):  True
operator.gt(y,x):  True
operator.eq(x,x):  True
operator.ne(y,y):  False
operator.le(x,y):  True
operator.ge(y,x):  True

x: Google , y: Example
operator.lt(x,y):  True
operator.gt(y,x):  True
operator.eq(x,x):  True
operator.ne(y,y):  False
operator.le(x,y):  True
operator.ge(y,x):  True

Сравнение двух списков:

Пример

# Импорт модуля operator
import operator

a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a,b))
print("operator.eq(c,b): ", operator.eq(c,b))

Вывод вышеприведённого кода:

operator.eq(a,b):  False
operator.eq(c,b):  True

Функции операторов

Модуль operator предоставляет набор высокоэффективных функций, соответствующих встроенным операторам Python. Например,operator.add(x, y)— то же самое, что и выражениеx+y.

Типы функций включают: операции сравнения, логические операции, математические операции и операции над последовательностями объектов.

Функции сравнения объектов применимы ко всем объектам, а имена функций даны в соответствии с их операторами сравнения.

Многие имена функций совпадают с именами специальных методов, только без двойных подчеркиваний. Для обратной совместимости также сохранены многие функции с двойными подчеркиваниями. Для ясности рекомендуется использовать функции без двойных подчеркиваний.

Пример

# Пример на Python
# add(), sub(), mul()
 
# Импорт модуля operator
import operator
 
# Инициализация переменных
a = 4
 
b = 3
 
# Использование add() для сложения двух значений
print ("результат операции add():",end="");
print (operator.add(a, b))
 
# Используйте sub() для вычитания двух значений
print ("результат операции sub():",end="");
print (operator.sub(a, b))
 
# Используйте mul() для умножения двух значений
print ("результат операции mul():",end="");
print (operator.mul(a, b))

Вывод вышеприведённого кода:

add() 运算结果 :7
sub() 运算结果 :1
mul() 运算结果 :12

Действие

Синтаксис

Функция

Сложение

a + b

add(a, b)

Конкатенация строк

seq1 + seq2

concat(seq1, seq2)

Проверка вхождения

obj in seq

contains(seq, obj)

Деление

a / b

truediv(a, b)

Деление

a // b

floordiv(a, b)

Побитовое И

a & b

and_(a, b)

Побитовое XOR

a ^ b

xor(a, b)

Побитовое НЕ

~ a

invert(a)

Побитовое ИЛИ

a | b

or_(a, b)

Возведение в степень

a ** b

pow(a, b)

Идентичность

a is b

is_(a, b)

Идентичность

a is not b

is_not(a, b)

Присваивание по индексу

obj[k] = v

setitem(obj, k, v)

Удаление по индексу

del obj[k]

delitem(obj, k)

Значение по индексу

obj[k]

getitem(obj, k)

Сдвиг влево

a << b

lshift(a, b)

Остаток от деления

a % b

mod(a, b)

Умножение

a * b

mul(a, b)

Умножение матриц

a @ b

matmul(a, b)

Отрицание (арифметическое)

- a

neg(a)

Логическое отрицание

not a

not_(a)

Унарный плюс

+ a

pos(a)

Сдвиг вправо

a >> b

rshift(a, b)

Присваивание срезу

seq[i:j] = values

setitem(seq, slice(i, j), values)

Удаление среза

del seq[i:j]

delitem(seq, slice(i, j))

Значение среза

seq[i:j]

getitem(seq, slice(i, j))

Форматирование строк

s % obj

mod(s, obj)

Вычитание

a - b

sub(a, b)

Проверка истинности

obj

truth(obj)

Сравнение

a < b

lt(a, b)

Сравнение

a <= b

le(a, b)

Равенство

a == b

eq(a, b)

Неравенство

a != b

ne(a, b)

Сравнение

a >= b

ge(a, b)

Сравнение

a > b

gt(a, b)

Другие расширения