Expressões de Atribuição em Python

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos sobre as Expressões de Atribuição do Python, também conhecidas como o "operador morsa" (:=). Este operador, introduzido no Python 3.8, permite atribuir um valor a uma variável como parte de uma expressão. É particularmente útil para otimizar código, evitar cálculos redundantes e simplificar expressões complexas.

Ao final deste laboratório, você deverá ser capaz de entender e aplicar as expressões de atribuição em seus programas Python. Começaremos com exemplos simples e progrediremos gradualmente para exemplos mais complexos.

Expressão de Atribuição Simples

Nesta etapa, começaremos com um exemplo simples para entender a sintaxe básica das expressões de atribuição.

Abrir o Shell do Python

Abra o shell do Python digitando o seguinte comando no terminal.

python3

Teste Simples

Vamos começar com um exemplo simples

## Exemplo básico de uma expressão de atribuição
n = 5
result = (squared := n * n)
print(squared, result)

Saída:

25 25

Aqui, atribuímos o resultado de n * n à variável squared usando o operador morsa := dentro dos parênteses. Em seguida, atribuímos o valor de squared à variável result. Finalmente, imprimimos os valores de squared e result.

Usando Expressões de Atribuição em uma Declaração Condicional

Nesta etapa, exploraremos o uso de expressões de atribuição dentro de uma declaração condicional.

## Usando expressões de atribuição em uma declaração condicional
input_str = "Hello, world!"
if (length := len(input_str)) > 10:
    print(f"A string tem {length} caracteres, que é mais de 10.")
else:
    print(f"A string tem {length} caracteres, que é menor ou igual a 10.")

Saída:

The string has 13 characters, which is more than 10.

Aqui, calculamos o comprimento de input_str e o atribuímos à variável length usando o operador morsa dentro da condição da declaração if. Isso nos permite usar o valor de length em ambos os ramos da condicional.

Usando Expressões de Atribuição em um Loop

Agora, vamos ver como usar expressões de atribuição em um loop.

## Usando expressões de atribuição em um loop
numbers = [1, 2, 3, 4, 5]
while (n := numbers.pop()) > 2:
    print(f"Popped {n}, which is greater than 2.")
print(f"Popped {n}, which is less than or equal to 2.")

Saída:

Popped 5, which is greater than 2.
Popped 4, which is greater than 2.
Popped 3, which is greater than 2.
Popped 2, which is less than or equal to 2

Neste exemplo, usamos o operador morsa dentro da condição do loop while para remover elementos da lista numbers e atribuí-los à variável n. O loop continua até que um elemento menor ou igual a 2 seja removido.

Usando Expressões de Atribuição em List Comprehension

Finalmente, vamos explorar o uso de expressões de atribuição em uma list comprehension.

## Usando expressões de atribuição em uma list comprehension
from math import sqrt

numbers = [1, 4, 9, 16, 25]
roots = [int(root) for n in numbers if (root := sqrt(n)) == int(root)]
print(roots)

Saída:

[1, 2, 3, 4, 5]

Neste exemplo, usamos o operador morsa dentro de uma list comprehension para calcular a raiz quadrada de cada número em numbers e verificar se é um inteiro. Se for, adicionamos a raiz quadrada inteira à lista roots.

Resumo

Neste laboratório, exploramos as Expressões de Atribuição (operador morsa) do Python através de uma série de exemplos passo a passo. Cobrimos a sintaxe básica e o uso em instruções condicionais, loops e list comprehensions. A esta altura, você deve ter uma boa compreensão de como usar expressões de atribuição em seu código Python para otimizar e simplificar expressões complexas.

Lembre-se de usar as expressões de atribuição com sabedoria para tornar seu código mais legível e eficiente. Como acontece com qualquer recurso de programação, é importante não usá-lo em excesso, pois pode levar a um código menos sustentável se usado excessivamente ou de forma inadequada.

Continue praticando e experimentando com o operador morsa em diferentes cenários para aprimorar suas habilidades de programação em Python. Boa sorte e boa codificação!