tldr
Los guiones son no ilegal, pero que no deben usarlos por 3 razones:
- lo que necesita una sintaxis especial para importar archivos con guiones
- Nadie espera que un nombre de módulo con un guión
- Va en contra de las recomendaciones del Python Style Guide
Si usted definitivamente necesidad de importar un nombre de archivo con una pizca de la sintaxis especial es la siguiente:
module_name = __import__('module-name')
curioso acerca de por qué necesitamos una sintaxis especial?
La razón de la sintaxis especial es que cuando se escribe import somename
va a crear un objeto de módulo con identificador somename
(por lo que más adelante se puede utilizar con, por ejemplo somename.funcname
). Por supuesto, module-name
no es un identificador válido y, por lo tanto, la sintaxis especial que otorga una válida.
¿No entiendes por qué el nombre del módulo no es un identificador válido?
No se preocupe, yo tampoco. Aquí hay un consejo para ayudarte: Mira esta línea de Python: x=var1-var2
. ¿Ves una resta en el lado derecho de la tarea o un nombre de variable con un guión?
PS
originales Nada en mi respuesta, excepto incluyendo lo que yo consideraba como los bits de información más relevantes de todas las otras respuestas en un solo lugar
el problema no tiene nada que ver con el estilo, es un _syntax_ _error_ – hop
Como se muestra a continuación, es posible tener un archivo con este nombre, por lo que la guía de estilo es muy relevante. –
Puede ser muy útil usar guiones en el directorio Python y nombres de archivo cuando explícitamente desea evitar importaciones. Por ejemplo, en (digamos) un proyecto de Django, puede tener scripts escritos en Python que no deberían ser direccionables como aplicaciones. Puede ponerlos en una carpeta como 'ops-scripts' y saber que no se pueden importar utilizando un enfoque de espacio de nombres de paquete normal. O un solo script podría llamarse 'stop-website.py' para un efecto similar. Cualquiera de estos aún podría importarse a través de 'runpy' y algunos otros métodos, por supuesto, pero esto ayuda a evitar algunos errores comunes. –