Como usar o operador walrus de forma simplificada
O Operador do Walrus: Expressões de Atribuição no Python 3.8
por Geir Arne Hjelle
Cada nova versão do Python adiciona novos recursos à linguagem. Para o Python 3.8, a maior mudança é a adição das expressões de atribuição. Especificamente, o operador :=
fornece uma nova sintaxe para atribuir variáveis no meio de expressões. Esse operador é conhecido coloquialmente como o operador do walrus.
Este tutorial é uma introdução detalhada ao operador do walrus. Você aprenderá algumas das motivações para a atualização da sintaxe e explorará alguns exemplos onde as expressões de atribuição podem ser úteis.
Neste tutorial, você aprenderá como:
- Identificar o operador do walrus e entender seu significado
- Entender os casos de uso para o operador do walrus
- Evitar código repetitivo usando o operador do walrus
- Converter entre código que utiliza o operador do walrus e código que utiliza outros métodos de atribuição
- Entender os impactos na compatibilidade retroativa ao utilizar o operador do walrus
- Usar o estilo apropriado em suas expressões de atribuição
Observe que todos os exemplos do operador do walrus neste tutorial requerem o Python 3.8 ou posterior para funcionar.
Fundamentos do Operador do Walrus
Vamos começar com alguns termos diferentes que os programadores usam para se referir a essa nova sintaxe. Você já viu alguns deles neste tutorial.
O operador :=
é oficialmente conhecido como o operador de expressão de atribuição. Durante discussões iniciais, ele recebeu o apelido de operador do walrus porque a sintaxe :=
se parece com os olhos e presas de um morsa virada de lado. Você também pode ver o operador :=
sendo referido como o operador de dois pontos igual. Outro termo usado para expressões de atribuição é expressões nomeadas.
Olá, Walrus!
Para ter uma primeira impressão do que as expressões de atribuição são, inicie seu REPL e brinque com o seguinte código:
A linha 1 mostra uma declaração de atribuição tradicional em que o valor False
é atribuído à variável walrus
. Em seguida, na linha 5, você usa uma expressão de atribuição para atribuir o valor True
à variável walrus
. Após as linhas 1 e 5, você pode se referir aos valores atribuídos usando o nome da variável walrus
.
Você pode estar se perguntando por que está usando parênteses na linha 5, e você aprenderá por que os parênteses são necessários mais adiante neste tutorial.
Observação: Uma declaração no Python é uma unidade de código. Uma expressão é uma declaração especial que pode ser avaliada para algum valor.
Por exemplo, 1 + 2
é uma expressão que avalia para o valor 3
, enquanto number = 1 + 2
é uma declaração de atribuição que não avalia para um valor.
Embora o código acima demonstre o básico do operador do walrus, há muito mais para aprender sobre ele. Vamos explorar os fundamentos desse operador e discutir seus casos de uso, syntax e possíveis armadilhas.
Casos de Uso do Operador do Walrus
Depuração
O operador do walrus pode ser muito útil durante a depuração de código. Com ele, você pode atribuir um valor a uma variável no meio de uma expressão e, ao mesmo tempo, avaliar a expressão em si. Isso pode ser útil para verificar o valor de uma variável enquanto a expressão está sendo avaliada.
Aqui está um exemplo para ilustrar esse caso de uso:
Nesse exemplo, o operador do walrus é usado para atribuir o valor de input("Digite algo: ")
à variável line
enquanto também é feita a comparação com a string "sair"
. O loop while
continuará sendo executado enquanto o valor digitado pelo usuário for diferente de “sair”. A cada iteração do loop, o valor digitado pelo usuário é impresso na tela.
Listas e Dicionários
O operador do walrus também pode ser usado para simplificar a manipulação de listas e dicionários em algumas situações. Vamos ver um exemplo com uma lista:
Nesse exemplo, o operador do walrus é utilizado para atualizar o valor de index
a cada iteração do loop while
. A cada iteração, o valor do índice é incrementado e utilizado como índice para acessar o número correspondente na lista numbers
. O número e o índice são então impressos na tela.
List Comprehensions
As expressões de atribuição também podem ser usadas em list comprehensions para simplificar o código. Vamos ver um exemplo:
Nesse exemplo, o operador do walrus é utilizado para atribuir o valor de number ** 2
à variável square
enquanto a lista comprehension itera sobre os números da lista numbers
. O resultado é uma nova lista contendo os números da lista numbers
elevados ao quadrado.
Loops While
Outro caso de uso comum para o operador do walrus é simplificar loops while
que dependem de uma expressão booleana. Vamos ver um exemplo:
Nesse exemplo, o operador do walrus é utilizado para atribuir um número aleatório entre 1 e 10 à variável number
enquanto o número sorteado for diferente de 7. O loop while
continuará sendo executado até que o número 7 seja sorteado. Quando isso acontecer, a mensagem “Número 7 sorteado!” será impressa na tela.
Testemunhas e Contraexemplos
O operador do walrus também pode ser usado para simplificar a declaração de variáveis em casos complexos, em que vários testes ou verificações são necessários dentro de uma expressão. Vamos ver um exemplo:
Sintaxe do Operador do Walrus
Para utilizar o operador do walrus corretamente, é importante entender sua sintaxe. O operador do walrus é representado pelo símbolo :=
e pode ser utilizado em várias situações.
Aqui estão alguns exemplos de como utilizar o operador do walrus:
Observe que, em cada exemplo, o operador do walrus é utilizado para atribuir um valor a uma variável e, ao mesmo tempo, utilizar esse valor em uma expressão.
Possíveis Armadilhas do Operador do Walrus
Embora o operador do walrus seja uma adição empolgante ao Python, é importante estar ciente de algumas armadilhas potenciais ao utilizá-lo.
Possíveis Efeitos Colaterais
Quando você utiliza o operador do walrus, tenha cuidado para não introduzir efeitos colaterais indesejados em seu código. Como o operador do walrus realiza uma atribuição no meio de uma expressão, isso pode levar a resultados inesperados se você não tiver cuidado.
Por exemplo:
Nesse exemplo, o operador do walrus é utilizado para atualizar o valor de number
a cada iteração do loop while
. No entanto, como a expressão (number := number - 1)
é avaliada antes da comparação com 0, o número 0 também é impresso na tela. Isso pode ser um resultado indesejado.
Legibilidade e Manutenção do Código
Embora o operador do walrus possa ser útil em certas situações, seu uso excessivo pode tornar o código menos legível e mais difícil de manter. O operador do walrus pode criar linhas de código longas e complexas, o que pode dificultar a compreensão do código por outras pessoas e até mesmo por você mesmo no futuro.
Portanto, é importante encontrar um equilíbrio entre a simplicidade e a utilização adequada do operador do walrus em seu código.
Conclusão
O operador do walrus é uma adição poderosa ao Python 3.8 e oferece uma nova sintaxe para atribuir variáveis no meio de expressões. Ele pode ser usado para simplificar e tornar o código mais legível em várias situações. No entanto, é importante utilizar o operador do walrus com cuidado e considerar os possíveis efeitos colaterais e impactos na legibilidade do código.
Espero que este tutorial tenha fornecido uma introdução clara e útil ao operador do walrus e suas aplicações. Agora você deve se sentir mais confortável com essa nova adição ao Python e capaz de utilizá-la de forma eficaz em seus próprios projetos. Divirta-se codificando!