Novos operadores Python!

Apr 04 2023
1º de abril de 2023 Muito se tem falado sobre o novo “operador morsa” no Python 3.8, escrito como :=.

1º de abril de 2023

Muito se tem falado sobre o novo “operador morsa” no Python 3.8, escrito como :=. Este post apresenta alguns operadores com nomes extravagantes menos conhecidos. Eles não estão disponíveis apenas no Python 3.8, mas também estão automaticamente disponíveis nas versões anteriores do Python, a partir de hoje, 1º de abril de 2023!

Operador Morsa :=

Operador de chapéu de esqui

O operador “chapéu de esqui”, escrito como *=0, pode ser usado para esvaziar uma variável, seja uma lista, string, tupla ou valor numérico. Por exemplo, depois de executar o código a seguir, itemshaverá uma lista vazia.

items = [1, 2, 3]
items *=0

      
                
Ski Hat Operator *=0

O “operador haltere”, escrito como [:]=[], também pode ser usado para esvaziar uma lista, mas não é tão versátil quanto o operador chapéu de esqui, pois funciona apenas para listas (e alguns outros tipos menos usados). Após o código a seguir, itemshaverá uma lista vazia:

items = [1, 2, 3]
items [:]=[]

      
                
Dumbbell Operator [:]=[]

O operador “lapping cat” ou “one and only”, escrito como ,=, escolhe o primeiro elemento de um iterável e afirma que o iterável tem exatamente um elemento. Após o código a seguir, firsté 1.

first ,= [1]

      
                
Lapping Cat Operator ,=

Os fãs de matemática ficarão satisfeitos em saber que o operador fatorial unário, escrito como, por exemplo, 3!, foi parcialmente incorporado ao Python. Infelizmente, a implementação está incompleta. Mas todos os testes de unidade a seguir passam, então isso é bom o suficiente, certo?

assert 0!=1
assert 3!=6
assert 4!=24
assert 5!=120
assert 6!=720
assert 9!=362,880

Python também permite que você use a palavra-chave abstractpara indicar que um método de uma classe abstrata deve ser implementado em uma subclasse para qualquer objeto instanciado. No código a seguir, o método nameé definido como abstract, portanto, uma chamada a um objeto da classe resulta em uma mensagem de erro apontando que o método não está definido.

class AnAbstractClass:
    def name(self): 
        abstract

>>> AnAbstractClass().name()
NameError: name 'abstract' is not defined

O leitor astuto reconhecerá que esses novos operadores, conforme os apresentei, dependem da colocação (ou falta de colocação) de espaços de uma forma que viola o PEP 8 . A isso eu digo: mas meu jeito é mais divertido! Especialmente hoje, 1º de abril. Para mais operadores, incluindo implementações dos operadores ++e <<de C++, veja meu antigo post .

PS: Tudo neste post é verdade, exceto “isso é bom o suficiente, certo?”

Artigos desta série

1º de abril de 2016: Vá, cachorro. Gauguin! A história de PD Eastman
1º de abril de 2017: Últimos tweets do Krell
1º de abril de 2018: Estilos de vida funcionais
1º de abril de 2020: Espero incorporar antes de envelhecer
1º de abril de 2021: Hamilton: o musical matemático
1º de abril de 2023: Patente de troca de pacotes revelada!
1º de abril de 2023: novos operadores Python!