Le seguenti 2 istruzioni di importazione hanno qualche differenza? O solo la stessa cosa?Qualche differenza tra queste 2 importazioni?
from package import *
import package
Le seguenti 2 istruzioni di importazione hanno qualche differenza? O solo la stessa cosa?Qualche differenza tra queste 2 importazioni?
from package import *
import package
from package import *
importa tutto dal pacchetto nel namespace locale; questo non è raccomandato perché può introdurre cose indesiderate (come una funzione che sovrascrive quella locale). Questo è uno strumento di importazione rapido e pratico, ma se le cose si fanno sul serio, è necessario utilizzare la sintassi from package import X,Y,Z
o import package
.
import package
importa tutto dal pacchetto nell'oggetto locale package
. Quindi, se il pacchetto implementa la funzione something()
, la userete per package.something()
.
Inoltre, un'altra cosa che dovrebbe essere parlato è il caso namespace nidificato: si supponga di avere la funzione package.blabla.woohoo.func()
, import package.blabla.woohoo
ed è possibile utilizzare package.blabla.woohoo.func()
, ma che è troppo complicato. Invece, il modo più semplice per farlo è from package.blabla import woohoo
e quindi utilizzare woohoo.func()
o from package.blabla.woohoo import func
e quindi utilizzare func()
. Spero che abbia senso. Se non lo fa, ecco un pezzo di codice per illustrare:
import package.blabla.woohoo
package.blabla.woohoo.func()
from package.blabla import woohoo
woohoo.func()
from package.blabla.woohoo import func
func()
Spero che questo aiuti :)
La differenza è l'utilizzo di uno spazio dei nomi per il pacchetto.
from package import *
class_in_package()
vs
import package
package.class_in_package()
Sono molto diversi, vedere [Importazione di moduli Python] (http://effbot.org/zone/import-confusion.htm). –