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:
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.
int num = 4; // `num` is declared as an integer std::string newString = "new string"; // `newString` is declared as a string
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:
Aqui está um exemplo simples que demonstra o uso de dicas de tipo com MyPy:
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.
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.
Para começar a usar o MyPy:
python3 -m pip install mypy
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.
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")
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:
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
Documentação oficial ↩
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