Pregunta python: nombrar un módulo que tiene un nombre de dos palabras


Intento armar un módulo realmente simple con un archivo fuente .py y ya me he topado con una barricada. Iba a llamarlo scons-config pero import scons-config no funciona en Python. encontré esta pregunta SO y mirado Guía de estilo PEP8 pero estoy desconcertado, no habla de convenciones de nombre de dos palabras.

¿Cuál es la forma correcta de lidiar con esto?

  • nombre del módulo: SconsConfig? scons_config? sconsconfig? scons.config?
  • nombre del único archivo .py en él: scons-config.py? scons_config.py?

editar: Vi "se desaconseja el uso de caracteres de subrayado" y eso me dejó en un callejón sin salida: ¿debería usar "sconsconfig" o "scons_config" (creo que los otros están fuera)?


53
2018-05-17 19:56


origen


Respuestas:


Si es necesario, siempre use guiones bajos _.

Usando un punto . ni siquiera funcionaría, de lo contrario

from scons.config import whatever

rompería.

Pero PEP 8 lo describe claramente:

Nombres de paquetes y módulos

Los módulos deberían tener nombres cortos, minúsculos. Subrayados  puede ser usado         en el nombre del módulo si mejora la legibilidad. Pitón paquetes debería         también tienen nombres cortos, minúsculos, aunque el uso de guiones bajos es         desanimado.

ACTUALIZAR:

Para dirigir su pregunta directamente: creo sconsconfig está bien. No es demasiado largo y bastante legible.

Pero, sinceramente, no creo que nadie lo culpe si usa guiones bajos y su código se ejecutará con cualquiera de las dos decisiones. Siempre hay un cierto nivel en el que no debería importar ese mucho más


60
2018-05-17 20:00



Primero, el nombre del módulo es el mismo que el nombre del único archivo .py. En Python-speak, una colección de varios archivos .py es un paquete.

PEP-8 desalienta la división de nombres de paquetes con guiones bajos. Un pico rápido en mi directorio de paquetes de sitio muestra que los nombres de multipalabras comúnmente se ejecutan juntos (por ejemplo, setuptools, sqlalchemy)

Los nombres de los módulos (es decir, los nombres de los archivos) se pueden dividir mediante guiones bajos (y generalmente hago esto, porque odio el nombre o el mensaje en vez de poder leerlos).

Solo con minúsculas (por PEP-8). Esto evita problemas al pasar de sistemas de archivos sensibles a mayúsculas y minúsculas y viceversa.


12
2018-05-17 20:08



Además de PEP-8, también puedes ver cómo los módulos nativos de Python lidian con este problema.

Si fueras a comparar los módulos nativos de Python 2 a el de Python 3, verás que la nueva tendencia con los desarrolladores oficiales es evitar mayúsculas y guiones bajos. Por ejemplo, ConfigParser en Python 2 se convierte configparser en Python 3.

Al observar esto, el mejor curso de acción sería evitar mayúsculas y guiones bajos, y simplemente unir las palabras, es decir sconsconfig.


4
2018-04-19 10:59



- es un no ir. El símbolo se usa para el operador menos. Lo mismo es cierto en la mayoría de los lenguajes de programación. Utilizar _o de otra manera nada en absoluto.


2
2018-05-17 20:04