The most beautiful equation in math

Sometimes interesting answers lie behind deceptively simple questions. Let’s ask a similar question. What are cube roots of 1? Or what number multiplied by itself three times yields 1? If you…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




PEP 8 e imports em Python

Quando comecei a estudar a linguagem Python e conheci a PEP 8, pensei: “Que diabos de frescura é isso? Não faz diferença nenhuma a ordem de importar as bibliotecas em Python!”. Mas eu cresci e aprendi a entender o real motivo pelo qual existem tais padrões.

E é o tema deste artigo. Se você pensa que é frescura e quer motivos para mudar de opinião, então este artigo é para você!

Vamos começar do básico…

PEP é uma abreviação de Python Enhancement Proposal, que em português significa proposta de aprimoramento do Python. Trata-se de uma sugestão de boas práticas elaborada por desenvolvedores ao redor do mundo, muitos deles integrantes da Python Software Foundation. Aqui começa o primeiro questionamento:

Todas elas são definidas por voluntários que contribuem com a comunidade, e passam por uma revisão completa e complexa, incluindo o próprio desenvolvedor e fundador da linguagem Python, Guido van Rossum, que, inclusive, é autor de algumas delas.

Inúmeras! Até o dia em que escrevi esse artigo existiam aproximadamente 8 mil PEP’s oficialmente em vigor.

Mas não se preocupe! Ninguém conhece todas elas, e nunca vai conhecer. Vamos focar na PEP mais importante quando se fala de desenvolvimento Python: a PEP 8. Quem tiver interesse pode ver sobre o que tratam as outras no link nas referências.

A PEP 8 é um guia de referência na estilização e boas práticas de código.

Ela foi criada em 05 de julho de 2001 e teve 3 autores principais: Guido van Rossum, o criador da linguagem Python; Barry Warsaw, desenvolvedor sênior do LinkedIn atualmente; e Nick Coghlan, ex-membro da comissão de diretoria da Python Software Foundation.

Abaixo, alguns tópicos que são abordados pela PEP 8:

A lista completa com todos os tópicos pode ser encontrada nas referências. O fato é que cada um destes tópicos daria um artigo completo. A ideia deste é tratar somente sobre o último.

A PEP 8 traz as seguintes recomendações sobre importações:

Esta primeira recomendação é por facilidade de leitura. Basicamente a recomendação é: cada import em uma linha. Simples assim.

Tela preta com código Python sobre importação de bibliotecas, uma em cada linha.
Fonte: autor

Minha opinião sobre essa regra: legibilidade! Já imaginou se tivéssemos vários imports em uma mesma linha? Nosso código ficaria assim:

Tela preta com código Python em desacordo com a primeira regra
Violação da regra n° 1. Fonte: autor

Tire suas próprias conclusões sobre legibilidade, levando em consideração a bagagem daqueles que criaram estas regras.

Não, não é frescura. Há um motivo bastante convincente para ordenação dos imports. Se você ainda não vê importância na ordenação dos imports, responda a seguinte pergunta: no código abaixo, você consegue identificar quais bibliotecas são padrão do Python, são de terceiros ou são de minha própria autoria/desenvolvimento?

A ideia por trás da ordenação de imports é separar as bibliotecas na seguinte ordem:

Assim, o nosso código ficaria desta forma:

Além da organização dos imports na ordem descrita acima, eles são organizados dentro de cada categoria também por ordem alfabética, e as categorias são separadas por um espaço em branco. Porém, creio que todos nós vamos concordar no ponto a seguir: organizar imports tem sua importância, mas ao mesmo tempo é chato ter que fazer toda hora, concordam? Imaginem se tivéssemos um projeto com vários arquivos e imports!

Mas calma, não há necessidade de revisar tudo isso manualmente! Existe uma biblioteca que facilita nossa vida, chamada isort, cujo link oficial é encontrado nas referências. Podemos unir a facilidade da biblioteca isort com configurações específicas de cada IDE para realizar a organização destes imports de forma automática.

Uma vez configurado, você nunca mais precisa se preocupar com isso, e estará sempre de acordo com os padrões de ordenação de import da PEP 8!

Vou ensinar como configurar a IDE do VS Code para organizar os imports automaticamente quando você salva o arquivo:

E agora, como em um passe de mágica, quando você salva os arquivos, deixamos a dupla VS Code + isort fazer o trabalho chato por nós.

Gif sobre a execução do isort em tela preta de códigos
VS Code + isort = mágica!

Uma regra de boa prática e em que há motivos bem específicos para aderir: performance e clareza do código.

O wildcard, representado pelo carácter *, significa “importe tudo de uma biblioteca”. O famoso from biblioteca import *. E qual é o problema disso? Por que é uma má prática, de acordo com a PEP 8?

Performance: você raramente usa tudo de uma biblioteca. Em outras palavras, você acaba importando funções e classes que nunca são utilizadas, sendo que, ao importar com wildcard, todas elas ficam disponíveis na memória do computador, mesmo que não usadas.

Clareza de código: quando você faz uso de wildcards, você não sabe de onde veio cada função, dificultando a manutenção do código e prejudicando a clareza e legibilidade dele. Porém, ainda sim, o código funciona!

Para ilustrar sobre clareza, responda à seguinte pergunta: você conseguiria identificar, no código abaixo, de qual pacote é cada função importada?

Da forma como foi escrito, o código pode confundir até desenvolvedores mais experientes, obrigando a consultar a documentação para confirmar tal informação. Isso que no exemplo temos só 2 bibliotecas e uma função. E quando o código começar a crescer, com bibliotecas padrões, de terceiros e próprias? Já imaginou o tamanho da confusão? A forma simples de corrigir isso:

Tela preta com código Python
Consegue responder à pergunta agora? Fonte: autor

E para ilustrar a questão de performance, podemos melhorar mais ainda os nossos imports, importando somente o que usamos no nosso código:

Tela preta com código Python.
Performance e clareza resolvidos! Fonte: autor

Passamos por uma breve introdução, falando sobre o que é PEP, quantas existem, quem elabora, e demos ênfase na PEP 8, muito utilizada como um guia de estilo para Python. Dentro da PEP 8, com foco nos imports, falamos sobre os 3 principais pontos mais relevantes: não importar tudo na mesma linha, ordenar seus imports e não utilizar wildcards! Se convenceu ou continua achando que é frescura? PEP 8 vai muito mais além do que imports e é mantida por uma comunidade global de desenvolvedores. Então, por que não aderir?

Add a comment

Related posts:

Tips to Choose the Best Quality Marble Human Statue From Manufacturers

When selecting a high-quality marble human statue, there are several factors to consider. To assist you in making an informed choice, here are a few tips: Research reputable manufacturers: Start by…

Advantages

The best and the worst part of the possibility of non dipending by a central authority, allowed by Web3 One of the most researched word in Google nowadays is Web3, or Web3.0. There is a lot of hype…

Themes throughout Modern Movies

The themes present all throughout Beloved and countless other texts can be identified in multiple movies that have been produced in the past two decades, especially Black Panther (Coogler) and 12…