Cómo usar el módulo de operador en Python

Cómo usar el módulo de operador en Python
Este artículo cubrirá una guía sobre el uso del módulo "Operador" disponible como parte de la biblioteca Python predeterminada. El módulo de operador le permite usar símbolos del operador mediante programación utilizando varias funciones. Por ejemplo, puede multiplicar dos números usando una función en lugar de usar el símbolo "*". Las funciones disponibles en el módulo del operador son útiles cuando desea pasar funciones invocables como argumentos a otro objeto de Python. También puede serializar las funciones del operador y almacenarlas en el disco para que puedan ser elegidos nuevamente más tarde. Algunas de las funciones disponibles en el módulo de operador también se pueden usar para realizar una búsqueda rápida de elementos en objetos de tipo iterable. Las funciones del operador también se pueden utilizar para reemplazar las funciones de Lambda de revestimiento, ya que proporcionan una sintaxis mucho más limpia y más corta.

Sintaxis básica y uso

La sintaxis de las funciones disponibles en el módulo del operador es bastante sencilla. Llama a una función específica que devuelve un resultado después de evaluar los argumentos que se le proporcionan. A continuación se muestra un ejemplo que muestra que los cálculos matemáticos se realizan utilizando varias funciones disponibles en el módulo del operador.

operador de importación
suma = operador.Agregar (5, 6)
resta = operador.Sub (10, 4)
multiplicación = operador.mul (3, 4)
división = operador.Truediv (6, 3)
Impresión (adición)
Imprimir (resta)
Imprimir (multiplicación)
Impresión (división)

La primera declaración importa el módulo del operador. A continuación, se llaman varias funciones disponibles en el módulo de operador como "Agregar", "Sub", "Mul" y "Truediv" y se les suministran dos números a ellos para que las operaciones matemáticas puedan ejecutarse en ellos. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

11
6
12
2.0

El código anterior es equivalente a las siguientes afirmaciones en Python:

suma = 5 + 6
resta = 10 - 4
multiplicación = 3 * 4
división = 6/3
Impresión (adición)
Imprimir (resta)
Imprimir (multiplicación)
Impresión (división)

En la primera muestra de código, en lugar de usar señales o símbolos del operador, está llamando a funciones para hacer los mismos cálculos. El módulo del operador incluye muchas otras funciones de utilidad de este tipo. A continuación se muestra un ejemplo que hace comparaciones entre dos números.

operador de importación
igual = operador.Eq (5, 6)
Lessthan = operador.LT (10, 4)
menos thanequalto = operador.LE (10, 10)
Notequal = operador.NE (6, 3)
Greatthan = operador.GT (5, 1)
greatthanequalto = operador.GE (5, 6)
Imprimir (igual)
Imprimir (Lessthan)
Imprimir (LessThanequalto)
Imprimir (Notequal)
Imprimir (Greatthan)
Imprimir (GreatThanequalto)

En la muestra de código anterior, se llaman varias funciones como "EQ", "LT", "LE", "NE", "GT" y "GE" para determinar la igualdad o la desigualdad de dos números suministrados como argumentos a estas funciones. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

FALSO
FALSO
Verdadero
Verdadero
Verdadero
FALSO

Esta muestra de código es equivalente a las siguientes afirmaciones:

igual = 5 == 6
Lessthan = 10 <4
Lessthanequalto = 10 <= 10
notaqual = 6 != 3
Greatthan = 5> 1
greatthanequalto = 5> = 6
Imprimir (igual)
Imprimir (Lessthan)
Imprimir (LessThanequalto)
Imprimir (Notequal)
Imprimir (Greatthan)
Imprimir (GreatThanequalto)

Lista de funciones útiles disponibles en el módulo de operador

A continuación se muestra una tabla que muestra algunas de las funciones útiles disponibles en el módulo del operador y sus declaraciones equivalentes. Esta tabla ha sido tomada de la documentación oficial de Python para el módulo de operador.

Tipo de operación / cálculo Función llamable Sintaxis equivalente
Suma Agregar (a, b) A + B
Concatenación Concat (SEQ1, SEQ2) SEQ1 + SEQ2
Prueba de contención Contiene (SEQ, OBJ) obj en seq
División Truediv (A, B) A / B
División Floordiv (A, B) A // B
Bit a bit y y_ (a, b) A y B
Bitwise exclusivo o Xor (A, B) a ^ b
Inversión bit a bit invertir (a) ~ A
Bit a bit o OR_ (A, B) A | b
Exponencia POW (A, B) A ** B
Identidad is_ (a, b) A es B
Identidad is_not (a, b) A no es B
Asignación indexada SetItem (OBJ, K, V) obj [k] = V
Deleción indexada delitem (obj, k) del obj [k]
Indexación getItem (obj, k) obj [k]
Shift izquierdo LHIFT (A, B) a <
Módulo mod (a, b) A % B
Multiplicación mul (a, b) A * B
Multiplicación matriz Matmul (A, B) A @ B
Negación (aritmética) neg (a) - a
Negación (lógica) No un) No un
Positivo pos (a) + a
Giro a la derecha rshift (a, b) A >> B
Asignación de rebanadas SetItem (SEQ, Slice (I, J), Valores) Seq [i: j] = valores
Deleción de rodajas Delitem (seq, Slice (i, j)) Del Seq [I: J]
Cortes GetItem (SEQ, Slice (I, J)) SEQ [I: J]
Formato de cadena Mod (S, OBJ) s % obj
Sustracción Sub (A, B) A - B
Prueba de verdad verdad (obj) obj
Pedido Lt (a, b) a
Pedido le (a, b) a <= b
Igualdad Eq (a, b) A == B
Diferencia ne (a, b) a != B
Pedido GE (A, B) A> = B
Pedido GT (A, B) A> B

Puede consultar esta tabla para encontrar una función de operador adecuada adecuada para sus requisitos de programación.

Funciones del operador en el lugar

El módulo del operador también incluye un conjunto limitado de funciones que pueden realizar cálculos "en el lugar". Esto se hace modificando el objeto en sí pasando como un argumento a una función de operador. Tales nombres de funciones tienen el prefijo del carácter "I". Por ejemplo, para modificar un objeto en el lugar y agregarle algo, deberá usar la función "IADD" disponible en el módulo de operador. Estas funciones son especialmente útiles para objetos mutables como los diccionarios y listas de Python. A continuación se muestra una muestra de código:

operador de importación
a = [1, 2, 3, 4]
operador.iadd (a, [5, 6, 7, 8])
Imprimir (a)

Aquí la función "iadd" se ha utilizado para concatenar dos objetos de tipo de lista en Python. La lista que se modificará en el lugar se suministra como el primer argumento, seguido de la lista que se unirá. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

[1, 2, 3, 4, 5, 6, 7, 8]

La lista completa de funciones en el lugar disponibles en el módulo de operador se puede encontrar aquí.

Uso de la función itemgetter

Puede usar la función "itemgetter" disponible en el módulo de operador para elegir elementos de una lista. A continuación se muestra un ejemplo básico:

operador de importación
a = ["A", "B", "C", "D"]
impresión (operador.itemgetter (1, 2) (a))
imprimir ((a [1], a [2]))

El método de itemgetter obtiene un elemento por su índice y es especialmente útil para recoger múltiples elementos de una vez. La segunda declaración muestra el uso de la función de getter de elementos donde los índices de dos elementos se suministran como argumentos. La función itemgetter devuelve un objeto llamable, que luego se llama al proporcionarle una lista de Python como argumento. El resultado final de la segunda y tercera declaración es el mismo. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

('antes de Cristo')
('antes de Cristo')

Las múltiples llamadas encadenadas a la función delgetter también se pueden escribir de la siguiente manera:

operador de importación
a = ["A", "B", "C", "D"]
b = operador.itemgetter (1, 2)
Imprimir (b (a))

La función itemgetter también se puede usar como clave al clasificar una lista anidada que contiene otras listas o tuplas. Aquí hay un ejemplo:

operador de importación
a = [["A", 2], ["B", 4], ["C", 1], ["D", 5]]
a.sort (clave = operador.itemgetter (1))
Imprimir (a)

El argumento de "clave" en la función de clasificación toma un objeto invocable. Este objeto llamable se ejecuta en cada elemento de la lista antes de hacer cualquier comparación para los fines de clasificación. Al suministrar la función Callable itemgetter como clave, está diciendo que la función de clasificación elija un elemento en el índice "1" de cada lista anidada y lo use para los fines de comparación. Después de ejecutar la muestra de código anterior, debe obtener la siguiente salida:

[['' C ', 1], [' A ', 2], [' B ', 4], [' D ', 5]]

Conclusión

El módulo del operador no trae nada nuevo a la tabla, ya que utiliza símbolos de operador debajo para realizar cálculos. Es muy posible que escriba declaraciones simples usando símbolos del operador. Sin embargo, son útiles en escenarios en los que desea realizar cálculos mediante la medición de las funciones, aprobar funciones invocables como argumentos y reemplazar las declaraciones de Lambda con algo más simple.