Pular para o conteúdo

Como utilizar constantes de forma fácil em Python?

[

Constantes em Python: Melhore a Manutenibilidade do seu Código

Introdução

Em programação, o termo constante refere-se a nomes que representam valores que não mudam durante a execução de um programa. As constantes são um conceito fundamental na programação, e os desenvolvedores Python as utilizam em muitos casos. No entanto, o Python não possui uma sintaxe dedicada para definir constantes. Na prática, as constantes em Python são apenas variáveis que nunca mudam.

Para evitar que os programadores atribuam novamente um nome que deveria representar uma constante, a comunidade Python adotou uma convenção de nomenclatura: utilizar letras maiúsculas. Para todo Pythonista, é essencial saber o que são constantes, bem como por que e quando usá-las.

Neste tutorial, você aprenderá como:

  • Definir corretamente constantes em Python
  • Identificar algumas constantes internas pré-definidas
  • Usar constantes para melhorar a legibilidade, reusabilidade e manutenibilidade do seu código
  • Aplicar diferentes abordagens para organizar e gerenciar constantes em um projeto
  • Utilizar diversas técnicas para tornar as constantes estritamente constantes em Python

Entendendo Variáveis e Constantes

Variáveis e constantes são dois conceitos fundamentais e históricos na programação de computadores. A maioria das linguagens de programação utiliza esses conceitos para manipular dados e trabalhar de maneira efetiva e lógica.

Variáveis e constantes provavelmente estarão presentes em todos os projetos, aplicativos, bibliotecas ou outros trechos de código que você escrever.

Definindo suas Próprias Constantes em Python

Existem diferentes abordagens para definir constantes em Python. Neste tutorial, você aprenderá duas maneiras de fazer isso:

  1. Constantes definidas pelo usuário: você pode definir suas próprias constantes usando nomes de variáveis em letras maiúsculas.
  2. Constantes de nível de módulo: você pode usar a convenção do Python para criar constantes de nível de módulo, usando nomes que começam com um único sublinhado seguido por letras maiúsculas.

Colocando Constantes em Ação

Constantes podem ser extremamente úteis para melhorar a legibilidade e a manutenibilidade do seu código. Nesta seção, você aprenderá como usar constantes em várias situações, como substituir números mágicos, reutilizar objetos e fornecer valores padrão para argumentos de função.

Substituindo Números Mágicos para Legibilidade

Em vez de utilizar números mágicos em seu código, você pode atribuir esses valores a constantes com nomes significativos. Isso torna seu código mais legível e facilita a compreensão das intenções por trás dos valores.

Exemplo:

# Código com números mágicos
def calcular_area(raio):
return 3.14159 * raio ** 2
# Código com constantes
PI = 3.14159
def calcular_area(raio):
return PI * raio ** 2

Reutilizando Objetos para Manutenibilidade

Ao usar constantes para representar objetos reutilizáveis, você torna seu código mais fácil de manter e modificar.

Exemplo:

# Código sem utilizar constantes
cores = ['vermelho', 'verde', 'azul']
def exibir_cores():
for cor in cores:
print(cor)
# Código utilizando constantes
CORES = ['vermelho', 'verde', 'azul']
def exibir_cores():
for cor in CORES:
print(cor)

Fornecendo Valores Padrão para Argumentos de Função

Você pode usar constantes para definir valores padrão para argumentos de função. Isso permite que os usuários da função omitam um argumento, caso desejem usar o valor padrão.

Exemplo:

# Código sem utilizar constantes
def saudar(nome, saudacao='Olá'):
print(saudacao, nome)
# Código utilizando constantes
SAUDACAO_PADRAO = 'Olá'
def saudar(nome, saudacao=SAUDACAO_PADRAO):
print(saudacao, nome)

Lidando com Constantes em um Projeto do Mundo Real

Em projetos maiores, é importante organizar e gerenciar suas constantes de maneira eficiente. Nesta seção, você aprenderá diferentes abordagens para lidar com constantes em um projeto do mundo real, como agrupá-las com o código relacionado, criar módulos dedicados para constantes, armazená-las em arquivos de configuração e lidar com constantes como variáveis de ambiente.

Agrupando Constantes com Código Relacionado

Ao agrupar suas constantes com o código relacionado, você facilita a manutenção e garante que as constantes sejam facilmente identificadas e utilizadas.

Exemplo:

# Código sem agrupar constantes
NOME = 'João'
IDADE = 25
CIDADE = 'São Paulo'
def exibir_informacoes():
print(f'Nome: {NOME}')
print(f'Idade: {IDADE}')
print(f'Cidade: {CIDADE}')
# Código com constantes agrupadas
class Pessoa:
NOME = 'João'
IDADE = 25
CIDADE = 'São Paulo'
def exibir_informacoes():
print(f'Nome: {Pessoa.NOME}')
print(f'Idade: {Pessoa.IDADE}')
print(f'Cidade: {Pessoa.CIDADE}')

Criando um Módulo Dedicado para Constantes

Criar um módulo dedicado para constantes é uma boa prática que ajuda a organizar seu código e facilita a reutilização de constantes em diferentes partes do projeto.

Exemplo:

constantes.py
NOME = 'João'
IDADE = 25
CIDADE = 'São Paulo'
# main.py
import constantes
def exibir_informacoes():
print(f'Nome: {constantes.NOME}')
print(f'Idade: {constantes.IDADE}')
print(f'Cidade: {constantes.CIDADE}')

Armazenando Constantes em Arquivos de Configuração

Quando você precisa configurar constantes específicas para diferentes ambientes (como desenvolvimento, teste e produção), pode ser útil armazenar essas constantes em arquivos de configuração separados.

Exemplo:

config-dev.ini
[NOME]
VALOR = 'João'
[IDADE]
VALOR = 25
[CIDADE]
VALOR = 'São Paulo'
# config-test.ini
[NOME]
VALOR = 'Maria'
[IDADE]
VALOR = 30
[CIDADE]
VALOR = 'Rio de Janeiro'
# config-prod.ini
[NOME]
VALOR = 'Carlos'
[IDADE]
VALOR = 35
[CIDADE]
VALOR = 'Brasília'
# main.py
import configparser
config = configparser.ConfigParser()
config.read('config-test.ini')
def exibir_informacoes():
print(f'Nome: {config["NOME"]["VALOR"]}')
print(f'Idade: {config["IDADE"]["VALOR"]}')
print(f'Cidade: {config["CIDADE"]["VALOR"]}')

Lidando com Constantes como Variáveis de Ambiente

Outra abordagem para lidar com constantes configuráveis é armazená-las como variáveis de ambiente. Dessa forma, você pode definir as constantes no ambiente de execução, em vez de armazená-las em arquivos de configuração ou no código.

Exemplo:

import os
def exibir_informacoes():
nome = os.getenv('NOME', 'João')
idade = os.getenv('IDADE', '25')
cidade = os.getenv('CIDADE', 'São Paulo')
print(f'Nome: {nome}')
print(f'Idade: {idade}')
print(f'Cidade: {cidade}')

Explorando Outras Constantes em Python

Além das suas próprias constantes, o Python possui algumas constantes incorporadas e pré-definidas que são úteis em várias situações. Nesta seção, você aprenderá sobre algumas dessas constantes, como constantes internas (dunder names), constantes matemáticas e constantes de string úteis.

Anotando Tipos em Constantes

Para adicionar informações adicionais sobre o tipo de uma constante, você pode utilizar a anotação de tipos do Python.

Exemplo:

from typing import Final
NOME: Final[str] = 'João'
IDADE: Final[int] = 25
CIDADE: Final[str] = 'São Paulo'

Definindo Constantes Estritas em Python

Existem algumas técnicas para tornar as constantes estritamente constantes em Python. Nesta seção, você aprenderá sobre algumas delas, como o atributo __slots__, o decorador @property, a função de fábrica namedtuple(), o decorador @dataclass e o método especial __setattr__().

Conclusão

Ao entender e utilizar constantes em Python, você poderá melhorar significativamente a legibilidade, manutenibilidade e reusabilidade do seu código. As constantes são uma ferramenta poderosa para tornar seu código mais expressivo e compreensível, e saber quando e como usá-las é uma habilidade essencial para todo Pythonista.

Sobre o Autor