0Pricing
Python Academy · Aula

Guardas e curingas

Adicione condições e casos abrangentes

Guardas e curingas é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Refinando correspondências

Às vezes, um padrão estrutural não é suficiente; você também precisa de uma condição. As guardas adicionam um teste if a um caso, e os curingas fornecem padrões abrangentes flexíveis.

Adicionando uma guarda

Escreva if <condition> depois de um padrão. O caso só corresponde quando o padrão se encaixa e a guarda é verdadeira.

n = 7

match n:
    case x if x < 0:
        print('negative')
    case x if x == 0:
        print('zero')
    case x if x > 0:
        print('positive')

Guardas usam nomes capturados

Uma guarda pode fazer referência a variáveis associadas pelo padrão. Aqui, o par capturado é verificado quanto à igualdade.

point = [3, 3]

match point:
    case [x, y] if x == y:
        print('on the diagonal')
    case [x, y]:
        print('off the diagonal')

Quando a guarda falha

Se a estrutura corresponder, mas a guarda for falsa, a correspondência continua para o caso seguinte em vez de parar.

value = 5

match value:
    case n if n > 100:
        print('big')
    case n:
        print('fell through to here:', n)

Guardas com padrões de classe

As guardas podem ser combinadas com qualquer tipo de padrão, incluindo padrões de classe, para definir condições precisas sobre os atributos dos objetos.

from dataclasses import dataclass

@dataclass
class Order:
    total: float

def discount(order):
    match order:
        case Order(total=t) if t > 100:
            return 'free shipping'
        case Order():
            return 'standard shipping'

print(discount(Order(150)))
print(discount(Order(50)))

Recapitulação do curinga

O sublinhado isolado _ corresponde a qualquer coisa e não associa nada. Como caso final, ele trata tudo o que não foi capturado anteriormente.

x = 'unexpected'

match x:
    case 'a':
        print('letter a')
    case _:
        print('catch-all')

Captura versus curinga

Uma captura nomeada também corresponde a qualquer coisa, mas mantém o valor, enquanto _ o descarta. Use um nome quando precisar do valor no corpo.

value = 42

match value:
    case 0:
        print('zero')
    case other:        # capture: keeps the value
        print('value was', other)

Curingas dentro de padrões

O sublinhado pode aparecer dentro de padrões maiores para ignorar as partes que não são importantes para você.

record = ('user', 42, 'ignore_me')

match record:
    case ('user', user_id, _):
        print('user id:', user_id)

Combinando OR, guardas e curingas

Esses recursos podem ser compostos. Um padrão OR, seguido de uma guarda e de um curinga final, forma um classificador expressivo.

def classify(n):
    match n:
        case 0 | 1:
            return 'binary digit'
        case x if x % 2 == 0:
            return 'even'
        case _:
            return 'odd'

print(classify(0))
print(classify(4))
print(classify(7))

Exaustividade

Ao contrário de algumas linguagens, o Python não exige que uma correspondência seja exaustiva. Se nenhum caso corresponder, a instrução simplesmente não fará nada. Adicione um case _ final quando quiser garantir que um ramo sempre seja executado.

color = 'purple'
result = 'no match'

match color:
    case 'red':
        result = 'stop'
    case 'green':
        result = 'go'

print(result)

Guardas sobre dados desestruturados

As guardas combinam naturalmente com padrões de sequência e de mapeamento, permitindo testar os valores que você acabou de extrair.

data = [10, 20]

match data:
    case [a, b] if a + b > 25:
        print('sum is large')
    case [a, b]:
        print('sum is small')

Verificação rápida

O que acontece quando um padrão corresponde estruturalmente, mas sua condição de guarda é falsa?

Recapitulação

Você aprendeu a adicionar condições e casos abrangentes.

  • As guardas adicionam um teste if que pode usar nomes capturados.
  • Quando uma guarda falha, a execução passa ao caso seguinte.
  • _ corresponde e descarta; um nome captura.
  • Adicione um case _ final para garantir um ramo.

Perguntas Frequentes

A aula “Guardas e curingas” é grátis?

Sim — o texto completo de “Guardas e curingas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “Guardas e curingas”?

Adicione condições e casos abrangentes Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Guardas e curingas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Noções básicas de match e case
  2. Correspondência de sequências e mapeamentos
  3. Padrões de classes
  4. Guardas e curingas
← Voltar para Python Academy