2011-08-23 20 views
5

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 
+0

Sono molto diversi, vedere [Importazione di moduli Python] (http://effbot.org/zone/import-confusion.htm). –

risposta

12

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 :)

3

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() 
Problemi correlati