È necessario utilizzare la norma della comunità PEP8 e Python ALL_CAPS_CONSTANTS
. È un indizio visivo comune, usato da decenni in C, Java, Perl, PHP, Python, bash e altri linguaggi di programmazione e ambienti shell. Ma nel moderno linguaggio online, TUTTE LE TAPPETTE SIGNIFICANO LA GRAZIA . E gridare è maleducato.
Python è, tuttavia, piuttosto incoerente ALL_CAPS_CONSTANTS
. JavaScript potrebbe avere Math.PI
, ma Python ha math.pi
. Non esiste una costante più riconoscibile o duratura di π. Oppure considera sys.version_info
la versione di Python su cui stai eseguendo. Costante al 100% per tutta la durata del tuo programma - molto più PORT
o MAX_ITERATIONS
o altre costanti che definiresti. O che ne dici sys.maxsize
? Il valore intero nativo massimo della tua piattaforma è costante non solo su uno o due programmi, ma sulla durata del tuo hardware.
Se queste costanti - tra cui alcuni, come π ed e che sono costanti fondamentali dell'universo, e non variano nel tutta l'eternità - se essi possono essere minuscolo, così ... così can altre costanti. Puoi scegliere.
Ricorda, PEP8 è una guida di stile. Una linea guida, non una legge. Una linea guida spesso violata anche dalla libreria standard di Python. E citando un'altra linea guida Python di base, PEP20 (alias "The Zen of Python"):
- Bello è meglio che brutto
- La leggibilità conta
- La praticità batte la purezza.
Da un punto di vista pratico, quando un programma inizia YELLY_CONSTANT
e SHOUTY_PARAMETER
inizia a grattarsi, aiuta a ricordare che le costanti in maiuscolo generalmente non sopportano realmente gli ideali platonici , ma i parametri di un programma in esecuzione. Non c'è nulla di veramente costante su PORT
, SITENAME
o NUMRUNS
, e non devono essere gestiti come globali programma autonomo. Ad esempio, possono essere rilasciati in un dizionario come un bundle accessibile a livello globale di parametri del programma:
config = {
'port': 80,
'sitename': "Bubba's Blog",
'numruns': 100,
}
Python ha anche una funzione di passaggio dei parametri di parole chiave che riduce la necessità di usare APPARENTLY_ANGRY_GLOBAL_VARIABLES
:
def process_data(sitename, port=80, numruns=100):
...
process_data("Bubba's Blog")
In pratica, molti di questi valori verranno (o dovrebbero essere) letti da file di configurazione, variabili di ambiente del sistema operativo, argomenti della riga di comando o altre fonti per soddisfare l' inversione del principio / modello di controllo . Ma questa è una storia più grande per un altro giorno.