Usuário de primeira vez em estouro de pilha e estou animado para estar aqui.
INTRO: Eu comecei recentemente a aventura mágica no mundo da programação em Python - eu adoro isso. Agora tudo correu bem na minha transição desajeitada de C, mas estou tendo problemas para criar algo que seria sinônimo de um arquivo HEADER (.h).
PROBLEMA: Tenho dicionários médias e listas (cerca de 1.000 elementos), enums longas, e "# define" (bem, não realmente), mas eu posso "t encontrar uma maneira limpa para organizá-los todos. Em C, eu jogá-los todos em um arquivo de cabeçalho e nunca mais pense sobre isso, no entanto, em Python que "não é possível ou assim eu acho.
SOLUÇÃO SUJA DE CORRENTE: Eu estou inicializando todas as variáveis CONSTANTES no topo do MÓDULO ou FUNÇÃO (módulo se múltiplas funções precisarem).
CONCLUSÃO: Eu ficaria eternamente grato se alguém tivesse inventado uma maneira de organizar LIMPAMENTE as variáveis constantes.
MUITO OBRIGADO!
Respostas:
20 para resposta № 1Coloque suas constantes em seu próprio módulo:
# constants.py
RED = 1
BLUE = 2
GREEN = 3
Em seguida, importe esse módulo e use as constantes:
import constants
print "RED is", constants.RED
As constantes podem ser qualquer valor que você goste, mostrei números inteiros aqui, mas listas e dicionários funcionariam da mesma forma.
9 para resposta № 2
Normalmente eu faço isso:
Arquivo: constants.py
CONSTANT1 = "asd"
CONSTANT_FOO = 123
CONSTANT_BAR = [1, 2, 5]
Arquivo: your_script.py
from constants import CONSTANT1, CONSTANT_FOO
# or if you want *all* of them
# from constants import *
...
Agora suas constantes estão em um único arquivo e você pode importá-las e usá-las.
3 para resposta № 3
Faça um arquivo separado constants.py
, e colocar todas as constantes relevantes globalmente lá. Então você pode import constants
para se referir a eles como constants.SPAM
ou faça o (questionável) from constants import *
para se referir a eles simplesmente como SPAM
ou EGGS
.
Enquanto estamos "aqui, observe que o Python não suporta constante constantes. A convenção é apenas para nomeá-los em ALL_CAPS
e prometo não mutacioná-los.