"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Introdução ao MyPy

Introdução ao MyPy

Publicado em 2024-08-26
Navegar:145

MyPy Introduction

Introdução

MyPy1 é um verificador de tipo estático para Python. Ao contrário de linguagens de tipo estaticamente como C ou Java, Python é de tipo dinâmico. Isso significa que em Python você não precisa declarar explicitamente o tipo de uma variável; é inferido em tempo de execução. Por exemplo:

Python (digitado dinamicamente)

num = 4                # `num` is inferred as an integer
newString = "new string"  # `newString` is inferred as a string

Em contraste, linguagens de tipo estaticamente exigem que você especifique o tipo de cada variável em tempo de compilação. Isso ajuda a detectar erros relacionados ao tipo durante o desenvolvimento, e não em tempo de execução.

C (digitado estaticamente)

int num = 4;            // `num` is declared as an integer
std::string newString = "new string";  // `newString` is declared as a string

Por que usar MyPy?

Em linguagens de tipo dinâmico como Python, erros de tipo podem ocorrer em tempo de execução, o que pode levar a bugs que são mais difíceis de rastrear. MyPy resolve isso permitindo que você adicione dicas de tipo ao seu código Python, que podem ser verificadas estaticamente antes da execução. Isso oferece várias vantagens:

  • Detecção antecipada de erros: identifique erros relacionados ao tipo durante o desenvolvimento, em vez de encontrá-los em tempo de execução.
  • Melhor legibilidade do código: dicas de tipo esclarecem os tipos esperados de variáveis ​​e argumentos de função, melhorando a legibilidade do código.
  • Melhor suporte a IDE: fornece preenchimento de código aprimorado e documentação embutida em IDEs que suportam dicas de tipo.

Exemplo com MyPy

Aqui está um exemplo simples que demonstra o uso de dicas de tipo com MyPy:

Sem dicas de tipo

def add(a, b):
    return a   b

print(add(5, 3))      # Output: 8
print(add("hello", "world"))  # Output: helloworld

No código acima, a função add pode aceitar números inteiros e strings, o que pode não ser o comportamento pretendido.

Com dicas de tipo

def add(a: int, b: int) -> int:
    return a   b

print(add(5, 3))      # Output: 8
# mypy will report an error for the following line:
# print(add("hello", "world"))  # TypeError: Expected int, got str

Ao incluir dicas de tipo (a: int, b: int), você especifica que add deve funcionar apenas com números inteiros. MyPy verifica o código em relação a essas dicas de tipo, detectando antecipadamente possíveis problemas relacionados ao tipo.

Instalando e executando MyPy

Para começar a usar o MyPy:

  1. Instalação: Instale o MyPy usando pip:
   python3 -m pip install mypy
  1. Executando MyPy: Depois de instalado, você pode executar o MyPy para verificar se há erros de tipo em seu código. Use o seguinte comando:
   mypy program.py

Este comando verificará seu código estaticamente, semelhante a como um compilador verifica a sintaxe em C . Ele relatará quaisquer erros de tipo que encontrar sem realmente executar o código.

Usar MyPy efetivamente permite que você integre os benefícios da digitação estática ao Python, enquanto ainda aproveita a flexibilidade de sua natureza dinâmica.

Vamos codificar um exemplo com MyPy

Sem MyPy

def greeting(name):
    return 'Hello '   name

# These calls will fail when the program runs, but MyPy will not report an error
greeting(123)
greeting(b"Aniket")

Com MyPy

Ao adicionar anotações de tipo (também conhecidas como dicas de tipo), o MyPy pode detectar possíveis problemas:

def greeting(name: str) -> str:
    return 'Hello '   name

greeting(3)         # mypy will report: Argument 1 to "greeting" has incompatible type "int"; expected "str"
greeting(b'Alice')  # mypy will report: Argument 1 to "greeting" has incompatible type "bytes"; expected "str"
greeting("World!")  # No error

Aqui:

  • A anotação name: str especifica que o argumento name deve ser uma string.
  • -> anotação str especifica que a função saudação retornará uma string.

Quando usar MyPy

MyPy é útil em diversas situações:

  • Capturar erros antecipadamente: Use MyPy para encontrar erros relacionados ao tipo antes de executar seu código. Isso ajuda a detectar erros antecipadamente e melhora a confiabilidade do código.

  • Tornar o código mais claro: adicionar dicas de tipo torna seu código mais fácil de entender. Ele mostra quais tipos de valores são esperados, o que ajuda outras pessoas (e você mesmo no futuro) a entender melhor seu código.

  • Atualizar código antigo: Ao atualizar o código antigo, o MyPy ajuda a encontrar problemas de tipo à medida que você adiciona dicas de tipo, tornando a transição mais suave.

  • Melhorar protótipos: Ao construir novos recursos ou protótipos, MyPy ajuda a garantir que o novo código funcione corretamente com o código existente, aplicando regras de tipo.

  • Manter grandes projetos: Em grandes projetos com muitos colaboradores, MyPy ajuda a manter o código consistente e evita bugs relacionados ao tipo.

  • Boost IDE Features: Se você usar um IDE, o MyPy melhora recursos como conclusão de código e navegação, tornando o desenvolvimento mais fácil.

Usar MyPy ajuda você a escrever código Python melhor e mais confiável, ao mesmo tempo que aproveita a flexibilidade do Python.

Um cheatsheet rápido oficial para mypy


  1. Documentação oficial ↩

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/aniket_purohit/mypy-introduction-1i3?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3