Como usar o módulo do operador em python

Como usar o módulo do operador em python
Este artigo abordará um guia sobre o uso do módulo "operador" disponível como parte da biblioteca Python padrão. O módulo do operador permite que você use símbolos do operador programaticamente usando várias funções. Por exemplo, você pode multiplicar dois números usando uma função em vez de usar o símbolo "*". As funções disponíveis no módulo do operador são úteis quando você deseja passar funções chamáveis ​​como argumentos para outro objeto Python. Você também pode serializar as funções do operador e armazená -las no disco para que elas possam ser escolhidas novamente mais tarde. Algumas das funções disponíveis no módulo do operador também podem ser usadas para executar uma pesquisa rápida de itens em objetos de tipo iterável. As funções do operador também podem ser usadas para substituir um revestimento de funções lambda, pois elas fornecem sintaxe muito mais limpa e curta.

Sintaxe e uso básicos

A sintaxe das funções disponíveis no módulo do operador é bastante direta. Você chama uma função específica que retorna um resultado depois de avaliar argumentos fornecidos a ela. Abaixo está um exemplo que mostra cálculos matemáticos sendo feitos usando várias funções disponíveis no módulo do operador.

operador de importação
adição = operador.Adicionar (5, 6)
subtração = operador.sub (10, 4)
Multiplicação = Operador.mul (3, 4)
Divisão = Operador.Truediv (6, 3)
Impressão (adição)
Impressão (subtração)
Imprimir (multiplicação)
impressão (divisão)

A primeira declaração importa o módulo do operador. As próximas várias funções disponíveis no módulo do operador como "Add", "sub", "Mul" e "Truediv" são chamadas e dois números são fornecidos a eles argumentos para que as operações matemáticas possam ser executadas nelas. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

11
6
12
2.0

O código acima é equivalente às seguintes declarações em Python:

adição = 5 + 6
subtração = 10 - 4
Multiplicação = 3 * 4
divisão = 6/3
Impressão (adição)
Impressão (subtração)
Imprimir (multiplicação)
impressão (divisão)

Na primeira amostra de código, em vez de usar sinais ou símbolos do operador, você está chamando funções para fazer os mesmos cálculos. O módulo do operador inclui muitas outras funções de utilidade. Abaixo está um exemplo que faz comparações entre dois números.

operador de importação
igual = operador.Eq (5, 6)
Lessthan = Operador.LT (10, 4)
LessThanequalto = Operador.Le (10, 10)
Notiqual = Operador.NE (6, 3)
Grandethan = Operador.GT (5, 1)
GORGERTHANEQUALTO = Operador.GE (5, 6)
Imprimir (igual)
Imprimir (Lessthan)
Impressão (Lessthanequalto)
Impressão (notiocal)
Imprimir (Greaterthan)
Impressão (Greaterthanequalto)

Na amostra de código acima, várias funções como "Eq", "LT", "LE", "NE", "GT" e "GE" são chamadas para determinar a igualdade ou a desigualdade de dois números fornecidos como argumentos a essas funções. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

Falso
Falso
Verdadeiro
Verdadeiro
Verdadeiro
Falso

Esta amostra de código é equivalente às seguintes declarações:

igual = 5 == 6
Lessthan = 10 <4
LessThanequalto = 10 <= 10
Notiqual = 6 != 3
maiorthan = 5> 1
Grandethanequalto = 5> = 6
Imprimir (igual)
Imprimir (Lessthan)
Impressão (Lessthanequalto)
Impressão (notiocal)
Imprimir (Greaterthan)
Impressão (Greaterthanequalto)

Lista de funções úteis disponíveis no módulo do operador

Abaixo está uma tabela mostrando algumas das funções úteis disponíveis no módulo do operador e suas declarações equivalentes. Esta tabela foi retirada da documentação oficial do Python para o módulo do operador.

Tipo de operação / cálculo Função chamada Sintaxe equivalente
Adição Adicionar (a, b) a + b
Concatenação CONCAT (SEQ1, SEQ2) SEQ1 + SEQ2
Teste de contenção Contém (SEQ, OBJ) OBJ na seq
Divisão Truediv (a, b) a / b
Divisão Floordiv (a, b) a // b
Bit nejudado e e_ (a, b) A&B
Bitwise exclusivo ou xor (a, b) a ^ b
Inversão bit -new Inverter (a) ~ a
Bit nejudado ou ou_ (a, b) a | b
Expeneção Pow (a, b) a ** b
Identidade is_ (a, b) a é b
Identidade is_not (a, b) a não é B
Atribuição indexada setItem (obj, k, v) obj [k] = v
Exclusão indexada Delitem (OBJ, K) del obj [k]
Indexação getItem (obj, k) obj [k]
Desvio à esquerda LSHIFT (A, B) a <
Modulo mod (a, b) a % b
Multiplicação mul (a, b) a * b
Multiplicação da matriz matmul (a, b) a @ b
Negação (aritmética) neg (a) - a
Negação (lógica) não_ (a) não a
Positivo POS (a) + a
Deslocamento para a direita rshift (a, b) a >> b
Atribuição de fatia setItem (seq, slice (i, j), valores) seq [i: j] = valores
Exclusão de fatia Delitem (SEQ, Slice (i, J)) del seq [i: j]
Fatiamento getItem (seq, slice (i, j)) SEQ [i: J]
Formatação de string mod (s, obj) s % obj
Subtração sub (a, b) a - b
Teste de verdade Verdade (OBJ) obj
Encomenda LT (a, b) a
Encomenda le (a, b) a <= b
Igualdade Eq (a, b) a == b
Diferença NE (a, b) a != b
Encomenda ge (a, b) a> = b
Encomenda gt (a, b) a> b

Você pode consultar esta tabela para encontrar uma função de operador apropriada adequada para seus requisitos de programação.

Funções do operador no local de estar

O módulo do operador também inclui um conjunto limitado de funções que podem executar cálculos "no local". Isso é feito modificando o próprio objeto, passando -o como um argumento para uma função do operador. Tais nomes de funções são prefixados com o personagem "i". Por exemplo, para modificar um objeto no local e adicionar algo a ele, você terá que usar a função “IADD” disponível no módulo do operador. Essas funções são especialmente úteis para objetos mutáveis, como dicionários e listas Python. Abaixo está uma amostra de código:

operador de importação
a = [1, 2, 3, 4]
operador.IADD (a, [5, 6, 7, 8])
Imprimir (a)

Aqui a função “IADD” foi usada para concatenar dois objetos do tipo de lista em Python. A lista que será modificada no local é fornecida como o primeiro argumento, seguido pela lista a ser unida. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

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

Lista completa de funções no local disponível no módulo do operador pode ser encontrado aqui.

Usando a função ItemGetter

Você pode usar a função "ItemGetter" disponível no módulo do operador para escolher itens de uma lista. Abaixo está um exemplo básico:

operador de importação
a = ["a", "b", "c", "d"]
Imprimir (operador.itemgetter (1, 2) (a))
impressão ((a [1], a [2]))

O método Itemgetter recebe um item pelo seu índice e é especialmente útil para pegar vários itens de uma só vez. A segunda declaração mostra o uso da função Itemgetter, onde os índices de dois itens são fornecidos como argumentos. A função Itemgetter retorna um objeto chamável, que é chamado, fornecendo -lhe uma lista de Python como um argumento. O resultado final da segunda e terceira declaração é o mesmo. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

('B', 'C')
('B', 'C')

As múltiplas chamadas acorrentadas à função Itemgetter também podem ser escritas da seguinte forma:

operador de importação
a = ["a", "b", "c", "d"]
B = Operador.Itemgetter (1, 2)
Imprimir (b (a))

A função Itemgetter também pode ser usada como uma chave ao classificar uma lista aninhada contendo outras listas ou tuplas. Aqui está um exemplo:

operador de importação
a = [["a", 2], ["b", 4], ["c", 1], ["d", 5]]
a.classificar (chave = operador.itemgetter (1))
Imprimir (a)

O argumento "chave" na função de classificação leva um objeto chamável. Este objeto chamável é executado em cada elemento da lista antes de fazer qualquer comparação para os fins de classificação. Ao fornecer a função Itemgetter de chamada como chave, você está dizendo a função de classificação para pegar um item no índice “1” de cada lista aninhada e usá -lo para fins de comparação. Depois de executar a amostra de código acima, você deve obter a seguinte saída:

[['c', 1], ['a', 2], ['b', 4], ['d', 5]]

Conclusão

O módulo do operador não traz nada de novo para a tabela, pois usa símbolos do operador embaixo para executar cálculos. Você pode muito bem escrever declarações simples usando símbolos do operador. No entanto, eles são úteis em cenários em que você deseja executar programaticamente cálculos chamando funções, aprova funções chamáveis ​​como argumentos e substitua declarações lambda por algo mais simples.