TLDR
trattini sono non illegale, ma non dovrebbero usarli per 3 motivi:
- È necessario sintassi speciale per importare i file con i trattini
- nessuno si aspetta un nome di modulo con un trattino
- È contro le raccomandazioni dello Python Style Guide
Se avete sicuramente bisogno di importare un nome di file con un trattino la sintassi speciale è questo:
module_name = __import__('module-name')
incuriosisce perché abbiamo bisogno di una sintassi speciale?
La ragione per la sintassi speciale è che quando si scrive import somename
si sta creando un oggetto modulo con identificatore somename
(in modo da poter poi utilizzare con per esempio somename.funcname
). Ovviamente module-name
non è un identificatore valido e quindi la sintassi speciale che fornisce una valida.
Non si capisce perché il nome del modulo non sia un identificatore valido?
Non preoccuparti, non l'ho fatto neanche io. Ecco un consiglio per aiutarti: guarda questa linea di pitone: x=var1-var2
. Vedete una sottrazione sul lato destro del compito o un nome di variabile con un trattino?
PS
nulla di originale nella mia risposta ad eccezione tra cui quello che ritenevo essere i bit più rilevanti di informazioni provenienti da tutte le altre risposte in un unico luogo
il problema non ha nulla a che fare con lo stile, è un _syntax_ _error_ – hop
Come mostrato di seguito, è possibile avere ancora un file con questo nome, quindi la guida di stile è molto rilevante. –
Può essere molto utile utilizzare i trattini nei nomi di directory e file Python quando si desidera evitare esplicitamente le importazioni. Ad esempio in (ad esempio) un progetto Django, potresti avere script scritti in Python che non dovrebbero essere indirizzabili come applicazioni. Puoi metterli in una cartella come "ops-scripts" e sapere che non possono essere importati usando un normale approccio allo spazio dei nomi dei pacchetti. Oppure un singolo script potrebbe essere denominato 'stop-website.py' per un effetto simile. Ognuno di questi potrebbe ancora essere importato tramite 'runpy' e altri metodi, naturalmente, ma questo aiuta a evitare alcuni errori comuni. –