Convención de nomenclatura de archivos Python?

139

He visto esta parte de PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-names

No tengo claro si esto se refiere al nombre de archivo de un módulo / clase / paquete.

Si tuviera un ejemplo de cada uno, ¿deberían los nombres de archivo estar en minúsculas con guiones bajos si corresponde? ¿O algo mas?

darkace
fuente
44
tl; dr: dos clases FooBary FooBizambas pueden ir en el archivo somepkg/foobar.py(por lo tanto:) from somepkg.foobar import FooBarpero la clase TimerErrorpodría ir en except/timer_error.py(por lo tanto from except.timer_error import TimerError), ya que eliminar CamelCasela palabra a veces hace que la palabra sea más difícil de leer, por lo tanto, snake_casepuede usarse para el nombre del archivo.
michael

Respuestas:

157

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

Los módulos deben tener nombres cortos, todo en minúsculas. Se pueden usar guiones bajos en el nombre del módulo si mejora la legibilidad. Los paquetes de Python también deben tener nombres cortos en minúsculas, aunque se desaconseja el uso de guiones bajos.

Para las clases :

Los nombres de clase normalmente deberían usar la convención CapWords.

Y los nombres de funciones y variables (locales) deben ser:

minúsculas, con palabras separadas por guiones bajos según sea necesario para mejorar la legibilidad

Vea esta respuesta para la diferencia entre un módulo, clase y paquete:

  • Un módulo de Python es simplemente un archivo fuente de Python, que puede exponer clases, funciones y variables globales.
  • Un paquete de Python es simplemente un directorio de módulos Python.

Entonces PEP 8 te dice que :

  • los módulos (nombres de archivo) deben tener nombres cortos en minúsculas y pueden contener guiones bajos;
  • los paquetes (directorios) deben tener nombres cortos en minúsculas , preferiblemente sin guiones bajos;
  • las clases deberían usar la convención CapWords.

PEP 8 dice que los nombres deben ser cortos ; Esta respuesta ofrece una buena visión general de qué tener en cuenta al crear nombres de variables, que también se aplican a otros nombres (para clases, paquetes, etc.):

  • los nombres de las variables no son descriptores completos;
  • poner detalles en los comentarios;
  • un nombre demasiado específico puede significar un código demasiado específico;
  • mantenga alcances cortos para una búsqueda rápida;
  • Pase tiempo pensando en la legibilidad.

Para finalizar, se ofrece una buena visión general de las convenciones de nomenclatura en la Guía de estilo de Google Python .

un oro
fuente
55
Y avergonzado pediré que confirme mi comprensión, los módulos contienen clases, ¿entonces usaría clases dentro de módulos y podría tener varias clases en un módulo?
darkace 01 de
66
Sí, puede tener 0, 1 o más clases en un módulo.
agold
1
Me alegro de haberlo encontrado a tiempo antes de que mi proyecto se fuera de control, ya que todos mis paquetes seguían la convención de CapsWords al igual que mis clases.
Bas Jansen
1
@pypmannetjies esta es en realidad otra pregunta, pero yo diría que debería preferir nombres largos y entendibles sobre los cortos y no entendibles.
Agold
1
Para el nombre del paquete, dice "se desaconseja el uso de guiones bajos", no está prohibido. En la filosofía de Python, debe seguir la regla, "aunque la practicidad supera la pureza". Por supuesto, lo mejor es encontrar una manera de seguir la regla y ser práctico (tal vez hacer varios paquetes para dividir el nombre, some> long> nameen lugar de somelongname?)
Juh_
0

Aquí hay un enlace para diferentes tipos de convenciones de nombres de Python.

La guía de estilo para Python se basa en las recomendaciones de la convención de nomenclatura de Guido.

ingrese la descripción de la imagen aquí

Vlad Bezden
fuente