Convention de nommage des fichiers Python?


139

J'ai vu cette partie de PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-names

Je ne sais pas s'il s'agit du nom de fichier d'un module / classe / package.

Si j’avais un exemple de chacun, les noms de fichiers devraient-ils tous être en minuscules avec des traits de soulignement, le cas échéant? Ou autre chose?


4
tl; dr: deux classes FooBaret FooBizpeuvent toutes les deux aller dans le fichier somepkg/foobar.py(donc:) from somepkg.foobar import FooBarmais la classe TimerErrorpeut aller dans except/timer_error.py(donc from except.timer_error import TimerError), car la suppression de CamelCaserend parfois le mot plus difficile à lire, donc snake_casepeut être utilisé pour le nom de fichier.
Michael

Réponses:


157

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

Les modules doivent avoir des noms courts en minuscules. Les traits de soulignement peuvent être utilisés dans le nom du module si cela améliore la lisibilité. Les paquets Python devraient également avoir des noms courts en minuscules, bien que l'utilisation des traits de soulignement soit déconseillée.

Pour les cours :

Les noms de classe doivent normalement utiliser la convention CapWords.

Et les noms de fonction et de variable (locale) doivent être:

minuscules, avec des mots séparés par des tirets bas pour améliorer la lisibilité

Voir cette réponse pour la différence entre un module, une classe et un package:

  • Un module Python est simplement un fichier source Python, qui peut exposer des classes, des fonctions et des variables globales.
  • Un paquet Python est simplement un répertoire de module (s) Python.

PEP 8 vous dit donc que :

  • les modules (noms de fichiers) doivent avoir des noms courts en minuscules et peuvent contenir des traits de soulignement;
  • les paquets (répertoires) doivent avoir des noms courts en minuscules , de préférence sans trait de soulignement;
  • les classes doivent utiliser la convention CapWords.

PEP 8 indique que les noms doivent être courts ; cette réponse donne un bon aperçu de ce qu'il faut prendre en compte lors de la création de noms de variables, qui s'appliquent également à d'autres noms (pour les classes, les packages, etc.):

  • les noms de variables ne sont pas des descripteurs complets;
  • mettre des détails dans les commentaires;
  • un nom trop spécifique peut signifier un code trop spécifique;
  • gardez des portées courtes pour une recherche rapide;
  • passer du temps à réfléchir à la lisibilité.

Pour finir, un bon aperçu des conventions de dénomination est donné dans le Guide de styles de Google Python .


5
Et je vais demander avec embarras de confirmer ma compréhension, les modules contiennent des classes - vous utiliseriez donc des classes au sein de modules et pourriez avoir plusieurs classes dans un seul module?
darkace

6
Oui, vous pouvez avoir 0, 1 ou plusieurs classes dans un module.
mardi

1
Je suis heureux de l'avoir trouvé à temps avant que mon projet ne prenne de l'ampleur, car tous mes packages suivaient la convention CapsWords, tout comme mes cours.
Bas Jansen

1
@pypmannetjies c'est en fait une autre question, mais je dirais que vous devriez préférer les noms longs et compréhensibles aux noms courts et incompréhensibles.
Agold

1
Pour le nom du paquet, il est indiqué que "l'utilisation de caractères de soulignement est découragée" et non interdite. En philosophie python, vous devriez suivre la règle, "bien que la commodité batte la pureté". Bien sûr, le mieux est de trouver un moyen de suivre la règle et être pratique (peut - être faire plusieurs paquets pour diviser le nom, some> long> au namelieu de somelongname?)
Juh_

0

Voici un lien vers différents types de conventions de noms Python.

Le guide de style pour Python est basé sur les recommandations de la convention de nommage de Guido.

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.