Pular para o conteúdo principal

6 práticas recomendadas de Python para um código melhor

Descubra as práticas recomendadas de codificação Python para escrever os melhores scripts Python da categoria.
23 de abr. de 2024  · 13 min de leitura

A codificação é a arte de escrever as instruções - também conhecidas como algoritmos - para que um computador realize uma tarefa específica. Para se comunicar com os computadores, os desenvolvedores usam linguagens de programação.

Assim como as linguagens naturais, como o inglês, o russo ou o quíchua, as linguagens de programação compreendem um conjunto específico de regras sintáticas e semânticas que fornecem os fundamentos da comunicação. Embora as linguagens naturais sejam mais complexas, flexíveis e dinâmicas, esses atributos também se aplicam, embora de forma mais limitada, às linguagens de programação. 

Você pode escrever até mesmo o algoritmo mais simples de várias maneiras diferentes. Embora seja desejável alguma flexibilidade no desenvolvimento de código, ela pode comprometer a eficiência e a comunicação eficaz, especialmente quando várias pessoas estão trabalhando nele.

Dessa forma, a legibilidade é um aspecto fundamental ao escrever o código. Para garantir que os desenvolvedores estejam na mesma página, a maioria das linguagens de programação desenvolveu padrões de codificação. Esses documentos fornecem diretrizes e práticas recomendadas para produzir código legível, sustentável e dimensionável. 

Neste artigo, descobriremos as práticas recomendadas de codificação para Python, uma das linguagens de ciência de dados mais populares. As práticas apresentadas nas seções a seguir baseiam-se principalmente no PEP 8, o guia padrão de práticas recomendadas para escrever código em Python. Para saber mais sobre o uso do Python, consulte nosso artigo ou nosso curso de Introdução ao Python

O que é o PEP 8?

"O código é lido com muito mais frequência do que é escrito. O código deve sempre ser escrito de uma forma que promova a legibilidade" - Guido van Rossum, o inventor do Python

O PEP 8 é um guia de estilo para o código Python. Escrito em 2001 por Guido van Rossum, Barry Warsaw e Nick Coghlan, o PEP 8 fornece um conjunto de recomendações para escrever códigos mais legíveis e consistentes. Ele abrange tudo, desde como nomear variáveis até o número máximo de caracteres que uma linha deve ter. 

PEP significa Python Enhancement Proposal (Proposta de aprimoramento do Python). Um PEP é um documento que descreve novos recursos propostos para o Python e documenta aspectos do Python, como design e estilo.

Embora não seja obrigatório, grande parte da comunidade Python usa o PEP 8. Portanto, é altamente recomendável seguir as diretrizes. Ao fazer isso, você melhorará suas credenciais como programador profissional. 

Apesar da ampla aceitação do PEP 8, as diretrizes podem não se adequar a todos os cenários específicos. Nesses casos, é uma prática comum as empresas definirem suas próprias convenções.

6 Práticas recomendadas de Python 

Práticas recomendadas de Python para qualidade de código

Escrever códigos legíveis e organizados pode fazer a diferença e aumentar suas perspectivas de carreira. Embora a codificação possa parecer um processo mecânico e complexo para iniciantes, a verdade é que a codificação é uma arte

Há muitas dicas que você pode seguir para aumentar a qualidade do código em Python. Aqui está uma lista de alguns dos mais relevantes.

A tirania da indentação

A indentação refere-se aos espaços no início de uma linha de código. Enquanto a indentação em outras linguagens de programação é apenas um recurso para facilitar a leitura, a indentação em Python é obrigatória. O Python usa a indentação para abrir um bloco de código. Mais precisamente, 4 espaços consecutivos por nível de recuo, conforme mostrado no código a seguir:

for number in [1,2,3,4]:
    if number % 2 == 0:
        print(number)
    else:
        continue

Comprimento máximo da linha

A PEP 8 recomenda que nenhuma linha tenha mais de 79 caracteres. Isso faz sentido, pois linhas mais curtas são mais fáceis de ler. Além disso, esse comprimento permite que você tenha vários arquivos abertos um ao lado do outro.

Linhas em branco

Cerque as definições de funções e classes de nível superior com duas linhas em branco. As definições de métodos dentro de uma classe são cercadas por uma única linha em branco. Linhas em branco extras podem ser usadas (com moderação) para separar grupos de funções relacionadas. Por fim, use linhas em branco nas funções (com moderação) para indicar seções lógicas. 

Use linters e autoformatadores

O domínio do código leva tempo. Prestar atenção a todos os detalhes durante a codificação pode ser um desafio e consumir muito tempo. Felizmente, as máquinas podem nos ajudar a garantir a qualidade do código, em especial os linters e formatadores. 

Os Linters realizam a análise estática dos códigos-fonte e verificam se há discrepâncias simânticas. Os formatadores são ferramentas semelhantes que tentam reestruturar o espaçamento do código, o comprimento da linha, o posicionamento dos argumentos e assim por diante para garantir que o código tenha uma aparência consistente em diferentes arquivos ou projetos. O Python oferece uma infinidade de linters e formatadores para você escolher.

Tenha em mente os princípios

Embora algumas das regras mencionadas acima sejam diretas, na maioria das vezes, a codificação é uma questão de bom gosto e intuição. Para se tornar um artista da codificação, você deve conhecer alguns dos princípios que sustentam o Python. Um ótimo exemplo desses princípios é o Zen of Python, abordado em um artigo separado.  

Práticas recomendadas de registro em Python

O registro em log é um meio de rastrear eventos que ocorrem quando algum software é executado. Especialmente quando os aplicativos aumentam em tamanho e complexidade, o registro torna-se uma técnica essencial para o desenvolvimento, a depuração, a execução e o acompanhamento do desempenho.  

Para lidar com as práticas de registro, o módulo de registro faz parte da Biblioteca Padrão do Python desde a versão 2.3. O módulo é o primeiro pacote a ser utilizado pela maioria dos desenvolvedores Python quando se trata de registro. Ele é amplamente descrito no PEP 282.

O registro em log é semelhante em espírito a uma função de impressão. No entanto, uma função de impressão carece de muitas informações que podem ser úteis para um desenvolvedor. O registro em log, no entanto, pode registrar os carimbos de data/hora e o número da linha em que o erro ocorreu. Ele também pode registrar erros ou qualquer informação em arquivos, soquetes, etc.

Para importar o módulo, você só precisa executar este código:

import logging

Nem todas as mensagens de registro são semelhantes. De fato, o módulo fornece uma categoria de níveis de registro de acordo com a gravidade da mensagem. É o seguinte:

  • NOTSET (0): Isso significa que todas as mensagens serão registradas.
  • Depurar (10): Útil para diagnosticar problemas no código. 
  • Informações (20): Ele pode funcionar como um reconhecimento de que não há erros no código. Um bom caso de uso do registro em nível de informações é o progresso do treinamento de um modelo de aprendizado de máquina. 
  • Advertência (30): Indicativo de um problema que pode ocorrer no futuro. Por exemplo, um aviso de um módulo que pode ser descontinuado no futuro ou um aviso de baixa rotação. 
  • Erro (40): Um bug grave no código; pode ser um erro de sintaxe, um erro de falta de memória ou exceções. 
  • Crítico (50): Um erro devido ao qual o programa pode parar de funcionar ou pode ser encerrado abruptamente.
import logging
logging.info('This message is just informative')
logging.debug('My missions is to provide information about debugging.')
logging.critical("A Critical Logging Message")

Dito isso, abaixo você encontrará uma lista de seis práticas recomendadas ao lidar com o registro em Python.  

Use logs em vez de impressões

Dissemos anteriormente que os registros fornecem informações da mesma forma que as funções de impressão. No entanto, os registros são muito mais avançados, pois podem fornecer informações mais granulares. 

A função Print pode ser tentadora, especialmente se você não estiver familiarizado com as rotinas de registro, mas os registros sempre serão a opção mais segura. Eles são mais adequados para dimensionar e lidar com aplicativos complexos. 

A Web está repleta de guias e documentação. Por exemplo, este tutorial de registro em log do DataCamp pode ser o que você está procurando para começar.

Use o módulo de registro 

Esse módulo é a opção ideal para a maioria dos desenvolvedores de Python. Isso significa que o módulo é bem mantido e apoiado por uma enorme comunidade que sempre terá uma resposta para suas dúvidas.

Escolha o nível de registro de forma inteligente

O módulo de registro é fornecido com seis níveis diferentes de mensagens. Cada um deles foi projetado para uma finalidade específica. Quanto mais você se ater a elas, mais fácil será para você e para os usuários entenderem o que está acontecendo no seu código.

Use carimbos de data e hora ao registrar

Esse é um recurso essencial dos registros que as funções de impressão não têm. Além de saber onde o problema apareceu, é importante saber quando ele ocorreu. Os registros de data e hora são seus maiores aliados nessas situações. Certifique-se de usar o formato padrão para gravar registros de data e hora, ou seja, o formato ISO-8601.

Esvaziar o compartimento de registro

Use classes RotatingFileHandler, como TimedRotatingFileHandler, em vez de FileHandler, para arquivar, compactar ou excluir arquivos de registro antigos para evitar problemas de espaço na memória. Essas classes limparão o espaço quando um limite de tamanho ou uma condição de tempo for acionada.

Práticas recomendadas de comentários em Python

Os comentários são muito importantes para fazer anotações para futuros leitores do nosso código. Embora seja difícil definir como o código deve ser comentado, há certas diretrizes que podemos seguir: 

  • Qualquer comentário que contradiga o código é pior do que nenhum comentário. Por isso, é muito importante que atualizemos o código e não nos esqueçamos de atualizar os comentários para evitar a criação de inconsistências. 
  • Os comentários devem ser frases completas, com a primeira letra em maiúscula. 
  • Tente escrever comentários em inglês. Embora todos tenham a liberdade de escrever seus comentários no idioma que considerarem apropriado, recomenda-se que o façam em inglês. 
  • Certifique-se de que seus comentários sejam claros e facilmente compreensíveis para outros falantes do idioma em que você está escrevendo.

Há dois tipos de comentários: comentários em bloco e comentários em linha. 

Um comentário de bloco explica o código que o segue. Normalmente, um comentário de bloco é recuado no mesmo nível do bloco de código. Cada linha de um comentário de bloco começa com um # e um espaço simples, como segue:

# This is a block comment
print('Welcome to DataCamp!")

Por outro lado, os comentários inline aparecem no mesmo nível do código. Os comentários em linha devem ser separados por pelo menos dois espaços da declaração. Semelhante a um comentário em bloco, um comentário inline começa com um único sinal de hash (#) e é seguido por um espaço e uma string de texto. 

print ("Have you ever tried Python?") # This is an inline comment

Práticas recomendadas de docstring do Python

Uma docstring é uma literal de string que ocorre como a primeira instrução em uma definição de módulo, função, classe ou método. Normalmente, você usa uma string de documentação para gerar automaticamente a documentação do código. Dessa forma, uma docstring pode ser acessada em tempo de execução usando o atributo especial obj.__doc__ desse objeto.

Para fins de consistência, as cadeias de documentos são sempre colocadas entre aspas duplas triplas (""").

Há duas formas de docstrings: as de uma linha e as de várias linhas. As frases de efeito são para casos realmente óbvios. Eles realmente deveriam caber em uma linha. O exemplo a seguir ilustra uma docstring de uma linha na função multiply():

def multiply(x, y):
    """ Return the product of two numbers """
    result = x * y
    return result

Por outro lado, uma docstring de várias linhas pode abranger várias linhas. Essa docstring deve documentar a função do script e a sintaxe da linha de comando, as variáveis de ambiente e os arquivos. As mensagens de uso podem ser bastante elaboradas e devem ser suficientes para que um novo usuário use o comando corretamente.

def calculate_salary(hours, price=20):
    """ Return the salary according to the hours worked

    Arguments:
    hours: total hours investe
    price: price of each hours worked. Minimum price is 20 dollars
    """
    salary = hours * price
    return salary

Uma explicação mais detalhada sobre docstrings pode ser encontrada na PEP257.

Práticas recomendadas de documentação do Python

Embora os comentários sejam importantes para que os outros desenvolvedores com quem você está trabalhando entendam o seu código, a documentação destina-se a ajudar uma comunidade de usuários em potencial a usar o seu software. Essa é uma etapa fundamental: não importa a qualidade do seu software, se a documentação não for boa o suficiente ou, pior ainda, não existir, as pessoas não o usarão. 

Especialmente se estiver trabalhando em um novo projeto, é sempre uma boa prática incluir um arquivo README. Esses arquivos normalmente são o principal ponto de entrada para os leitores do seu código. Elas incluem informações gerais para usuários e mantenedores do projeto. 

Embora conciso, o arquivo README deve explicar o objetivo do projeto, o URL da fonte principal do software e as informações de crédito.

Da mesma forma, você deve sempre incluir um arquivo setup.py, que garante que o software ou a biblioteca foi empacotado e distribuído com o Distulils, que é o padrão para a distribuição de módulos Python.

Além disso, se o seu software exigir outras dependências ou pacotes para ser executado, você deverá incluir um arquivo requirements.txt que descreva as dependências necessárias e suas versões.

Por fim, você pode adicionar qualquer outra informação que considere relevante para os usuários em potencial. Por exemplo, uma boa prática é fornecer exemplos de como seu pacote ou funções funcionam. 

Práticas recomendadas do ambiente virtual Python 

Para garantir a ordem e a consistência em seus projetos de dados, uma boa prática é criar um ambiente virtual para cada projeto que você iniciar. 

O ambiente virtual, também conhecido como virtualenvs, ajuda a desacoplar e isolar as versões do Python e as bibliotecas necessárias para o seu projeto, bem como as respectivas versões do pip. Isso autoriza os usuários finais a instalar e gerenciar seu próprio conjunto de software e versões, independentemente daqueles fornecidos pelo sistema. 

Para criar o virtualenvs, precisamos instalar primeiro o pacote necessário, escrevendo a seguinte linha de código em seu terminal:

pip install virtualenv

Para criar um novo virtualenv, o código a seguir fará a mágica. Estamos chamando o novo virtualenv de "new_venv"

python3 -m venv /path/to/new/virtual/environment/new_venv

Convenções de nomenclatura do Python

Um dos erros mais comuns entre os desenvolvedores iniciantes de Python é a nomeação inadequada de variáveis, classes, funções etc. As convenções de nomenclatura são elementos essenciais para garantir a legibilidade do código. 

Em Python, a maneira padrão de nomear objetos é explicada na PEP 8. De acordo com as diretrizes, novos módulos e pacotes (incluindo estruturas de terceiros) devem ser escritos de acordo com esses padrões, mas quando uma biblioteca existente tem um estilo diferente, a consistência interna é preferida.

Em geral, você deve evitar usar nomes muito gerais ou muito mundanos. Além disso, os identificadores usados na biblioteca padrão devem ser compatíveis com ASCII, conforme descrito na PEP 3131.

# Bad naming:
data_structure, ríos_españa, dictionary_with_countries_and_capitals
# Good naming:
user_profile, stop_words, global_emissions_df

Abaixo, você encontra uma lista com a convenção de nomenclatura dos objetos mais comuns em Python.

  • Pacotes e módulos
    • Os nomes de pacotes e módulos devem ser todos em letras minúsculas
    • Os sublinhados podem ser usados no nome do pacote e do módulo somente se isso melhorar a legibilidade.
  • Classes
    • Os nomes das classes devem seguir a convenção UpperCaseCamelCase
    • As classes integradas do Python, no entanto, são normalmente palavras em minúsculas
  • Variáveis de instância, métodos e funções
    • Os nomes das variáveis de instância devem estar todos em letras minúsculas
    • Use o sublinhado para adicionar novas palavras às variáveis das instâncias
    • As variáveis de instância não públicas devem começar com um único sublinhado
  • Constantes
    • Os nomes das constantes devem estar totalmente em maiúsculas
    • Use o sublinhado para adicionar novas palavras às constantes

Identificador

Convenção

Módulo

minúsculas

Classe

CapWords

Funções

minúsculas

Métodos

minúsculas

Variáveis de tipo

CapWords

Constantes

MAIÚSCULAS

Pacote

minúsculas

Perguntas frequentes sobre as práticas recomendadas do Python

Por que é importante seguir as práticas recomendadas de codificação?

Garantir a legibilidade, a qualidade do código e a escalabilidade durante as atividades de desenvolvimento de software

O que é um ambiente virtual?

Um ambiente virtual é uma ferramenta que separa as dependências de diferentes projetos, criando um ambiente isolado separado para cada projeto.

O que é o PEP 8?

É um documento que fornece diretrizes padrão e práticas recomendadas sobre como escrever código Python.

O que é recuo?

A indentação refere-se aos espaços no início de uma linha de código. O Python usa a indentação para indicar um bloco de código.

O que é o Zen do Python?

The Zen of Python é uma coleção de 19 "princípios orientadores" para escrever programas de computador que influenciam o design da linguagem de programação Python.

O que é uma docstring?

Uma docstring Python é uma string usada para documentar um módulo, classe, função ou método Python, para que os programadores possam entender o que ele faz sem precisar ler os detalhes da implementação

Quantos tipos de comentários são comuns em Python?

Há dois tipos de comentários: comentários em bloco e comentários em linha.

Temas

Cursos para Python

curso

Writing Efficient Python Code

4 hr
125.2K
Learn to write efficient code that executes quickly and allocates resources skillfully to avoid unnecessary overhead.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado
5 Python Challenges

blog

5 desafios Python para desenvolver suas habilidades

Aumente o nível de suas habilidades em Python com estes cinco desafios de codificação em Python. Faça um teste para ver se você consegue completar um em uma semana!
DataCamp Team's photo

DataCamp Team

5 min

blog

As 7 melhores certificações em Python para todos os níveis

Descubra se uma certificação em Python é adequada para você, quais são as melhores opções e as alternativas oferecidas neste guia abrangente.
Matt Crabtree's photo

Matt Crabtree

18 min

blog

Mais de 60 projetos Python para todos os níveis de conhecimento

60 ideias de projetos de ciência de dados que os cientistas de dados podem usar para criar um portfólio sólido, independentemente de sua especialização.
Bekhruz Tuychiev's photo

Bekhruz Tuychiev

16 min

tutorial

21 ferramentas essenciais do Python

Aprenda sobre as ferramentas Python essenciais para o desenvolvimento de software, raspagem e desenvolvimento da Web, análise e visualização de dados e aprendizado de máquina.
Abid Ali Awan's photo

Abid Ali Awan

6 min

tutorial

6 melhores IDEs Python para ciência de dados em 2023

Neste artigo, discutiremos seis dos melhores IDEs para cientistas de dados em 2023
Adel Nehme's photo

Adel Nehme

9 min

tutorial

Otimização em Python: Técnicas, pacotes e práticas recomendadas

Este artigo ensina a você sobre otimização numérica, destacando diferentes técnicas. Ele discute os pacotes Python, como SciPy, CVXPY e Pyomo, e fornece um notebook DataLab prático para você executar exemplos de código.
Kurtis Pykes 's photo

Kurtis Pykes

19 min

See MoreSee More