Quando fai from my_module import *
significa che tutte le funzioni e le dichiarazioni di classe di my_module sono disponibili. Questo è l'unico vantaggio per farlo.
Ci sono alcuni avvertimenti da considerare:
Devi sapere cosa c'è nell'altro modulo per sapere cosa viene importato
Se non sai quali funzioni o classi ci sono nel tuo 'my_module', devi andare a leggere questo modulo, mentre non intrinsecamente male. I nuovi membri del progetto potrebbero essere confusi e se torni al tuo codice 6 mesi dopo, potresti non essere completamente a conoscenza di ciò che viene effettivamente importato.
La chiarezza è la chiave
from my_reader import *
è meno chiaro di from my_reader import file_reader
Rischi di creare collisioni nelle importazioni
Se dichiari una funzione o una classe con lo stesso nome in due moduli diversi e importi entrambi nello stesso file, ciò causerà problemi. L'importazione con nome consente di sovrascrivere il nome all'importazione
Ad esempio:
from file_reader import read as read_file
from web_reader import read as read_website
Questo è un metodo molto più sicuro di
Conoscere le tue dipendenze
Quando importi solo le funzioni e le classi di cui hai bisogno, sai esattamente su cosa dipende il modulo su cui stai lavorando. E con gli strumenti puoi creare questi grafici delle dipendenze, se necessario.
Quando i moduli cambiano il peggio è ImportError
Il pericolo di non sapere cosa viene raccolto in quella stella, è quando una funzione o una classe viene spostata da un modulo a un'altra. Il compilatore non ti aiuterà quando hai una stella. Si otterrebbe un errore indefinito, che è miglia più confuso di ImportError, che è più facile da rintracciare.
Consigli
Se vuoi accedere a qualsiasi parte del modulo è probabilmente meglio usare import my_module
su from my_module import *
. Puoi accedere a qualsiasi funzione o oggetto di my_module
utilizzando la seguente sintassi:
my_module.my_awesome_function()
my_object = my_module.MyObject()
L'unico svantaggio è che è leggermente più lungo ma fornirà errori migliori. È ancora meglio decidere questo stile per il tuo progetto. Ma considera di applicare un po 'di codice pulito e di offrire buone strategie di debug in caso di errori dello sviluppatore.