Convenzione sulla denominazione dei file Python?


139

Ho visto questa parte di PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-names

Non sono chiaro se questo si riferisce al nome del file di un modulo / classe / pacchetto.

Se avessi un esempio di ciascuno, i nomi dei file dovrebbero essere tutti in minuscolo con caratteri di sottolineatura, se appropriato? O qualcos'altro?


4
tl; dr: due classi FooBare FooBizentrambe potrebbero andare nel file somepkg/foobar.py(quindi:) from somepkg.foobar import FooBarma la classe TimerErrorpotrebbe andare except/timer_error.py(così from except.timer_error import TimerError), poiché la rimozione di CamelCasetalvolta rende la parola più difficile da leggere, quindi snake_casepuò essere usata per il nome del file.
michael,

Risposte:


156

Citando https://www.python.org/dev/peps/pep-0008/#package-and-module-names :

I moduli dovrebbero avere nomi brevi, tutti in minuscolo. I caratteri di sottolineatura possono essere utilizzati nel nome del modulo se migliora la leggibilità. I pacchetti Python dovrebbero anche avere nomi brevi, tutti in minuscolo, sebbene l'uso di caratteri di sottolineatura sia sconsigliato.

Per le classi :

I nomi delle classi dovrebbero normalmente usare la convenzione CapWords.

E i nomi delle variabili di funzione e (locali) dovrebbero essere:

minuscole, con parole separate da caratteri di sottolineatura, se necessario, per migliorare la leggibilità

Vedi questa risposta per la differenza tra un modulo, una classe e un pacchetto:

  • Un modulo Python è semplicemente un file sorgente Python, che può esporre classi, funzioni e variabili globali.
  • Un pacchetto Python è semplicemente una directory dei moduli Python.

Quindi PEP 8 ti dice che :

  • i moduli (nomi di file) dovrebbero avere nomi brevi, tutti in minuscolo , e possono contenere caratteri di sottolineatura;
  • i pacchetti (directory) dovrebbero avere nomi brevi, tutti in minuscolo , preferibilmente senza caratteri di sottolineatura;
  • le classi dovrebbero usare la convenzione CapWords.

PEP 8 dice che i nomi dovrebbero essere brevi ; questa risposta offre una buona panoramica di cosa prendere in considerazione quando si creano nomi di variabili, che si applicano anche ad altri nomi (per classi, pacchetti, ecc.):

  • i nomi delle variabili non sono descrittori completi;
  • inserire i dettagli nei commenti;
  • un nome troppo specifico potrebbe significare un codice troppo specifico;
  • mantenere gli ambiti brevi per una rapida ricerca;
  • passare il tempo a pensare alla leggibilità.

Per finire, una buona panoramica delle convenzioni di denominazione è fornita nella Guida allo stile di Google Python .


5
E chiederò imbarazzato di confermare la mia comprensione, i moduli contengono classi - quindi useresti le classi all'interno dei moduli e potresti avere più classi in un modulo?
Darkace,

6
Sì, puoi avere 0, 1 o più classi in un modulo.
Agold

1
Sono contento di averlo trovato in tempo prima che il mio progetto fosse sfuggito di mano, poiché tutti i miei pacchetti seguivano la convenzione CapsWords proprio come le mie lezioni.
Bas Jansen,

1
@pypmannetjies questa è in realtà un'altra domanda, ma direi che dovresti preferire nomi lunghi e comprensibili a quelli brevi non comprensibili.
Agold

1
Per il nome del pacchetto, si dice "l'uso di caratteri di sottolineatura è sconsigliato", non proibito. Nella filosofia di Python, dovresti seguire la regola "sebbene la praticità superi la purezza". Naturalmente, la cosa migliore è trovare un modo per seguire la regola e essere pratico (magari fare diversi pacchetti di dividere il nome, some> long> nameal posto di somelongname?)
Juh_

0

Ecco un link per diversi tipi di convenzioni sui nomi Python.

La guida di stile per Python si basa sui consigli della convenzione di denominazione di Guido.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.