2010-05-17 4 views
45

Estoy tratando de armar un módulo realmente simple con un archivo fuente .py en él, y ya me he topado con una barricada. Iba a llamarlo scons-config pero import scons-config no funciona en Python. Encontré this SO question y miré PEP8 style guide pero estoy desconcertado, no habla de las convenciones de nombre de dos palabras.python: nombrando un módulo que tiene un 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 archivo .py único en él: scons-config.py? scons_config.py?

edición: Me vi "el uso de guiones se desalienta", y que me dejó en un callejón sin salida: se debe utilizar "sconsconfig" o "scons_config" (supongo que los otros están fuera)?

+1

Una sola '.py' es un módulo ... –

Respuesta

53

Si tiene que hacerlo, siempre use los caracteres de subrayado _.

Usando un punto . que ni siquiera trabajar, de lo contrario

from scons.config import whatever 

rompería.

Pero PEP 8 describe claramente:

paquete y los nombres de módulo

módulos deberían tener , nombres en minúsculas cortos. Underscoresse puede utilizar en el nombre del módulo si mejora la legibilidad. Python paquetes debe también tienen nombres cortos, minúsculas, aunque el uso de de caracteres de subrayado es desaconsejado.

ACTUALIZACIÓN:

para apuntar directamente a su pregunta: Creo sconsconfig está muy bien. No es demasiado largo y bastante legible.

Pero, sinceramente, no creo que nadie te culpe si usas caracteres de subrayado y tu código se ejecutará con cualquiera de las dos decisiones. Siempre hay un cierto nivel en el que no debería importar que mucho más.

+3

vi "uso de guiones se desalienta" y me fui a un callejón sin salida. –

+7

@Jason S: Bueno, úsalo si la legibilidad realmente sufre o piensa en otro nombre;) * solo * desaconsejado, no prohibido. –

+2

"Siempre hay un cierto nivel en el que ya no debería importarte tanto". Es cierto, pero casi siempre hay consecuencias para este tipo de decisiones y si eres un principiante como yo, es desalentador. ¡Gracias! –

2

- 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. Use _ o de otra manera nada en absoluto.

11

En primer lugar, 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 separación de nombres de paquetes con guiones bajos. Un pico rápido en mi directorio de paquetes de sitio muestra que los nombres de multipalabra comúnmente se ejecutan juntos (e.g., setuptools, sqlalchemy)

Los nombres de los módulos (es decir, los nombres de los archivos) pueden estar separados por guiones bajos (y normalmente hago esto, porque odio el nombre o los errores).

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

4

Aparte de PEP-8, también se puede comprobar cómo los módulos de Python nativos ocupan de este problema.

Si comparas the native modules of Python 2 con that of Python 3, verás que la nueva tendencia de los desarrolladores oficiales es evitar mayúsculas y guiones bajos. Por ejemplo, ConfigParser en Python 2 se convierte en configparser en Python 3.

En cuanto a esto, el mejor curso de acción sería evitar mayúsculas y guiones bajos, y simplemente se unen las palabras juntas, es decir sconsconfig.

Cuestiones relacionadas