2011-08-23 15 views
5

¿Los siguientes 2 estados de importación tienen alguna diferencia? ¿O lo mismo?¿Alguna diferencia entre estas 2 importaciones?

from package import * 

import package 
+0

Son muy diferentes, véase [Importar módulos de Python] (http://effbot.org/zone/import-confusion.htm). –

Respuesta

12

from package import * importa todo, desde el paquete en el espacio de nombres local; esto no se recomienda porque puede introducir cosas no deseadas (como una función que sobrescribe una local). Esta es una herramienta de importación rápida y práctica, pero si las cosas se ponen serias, debe usar la sintaxis from package import X,Y,Z o import package.

import package importa todo, desde el paquete en el objeto local package. Entonces, si el paquete implementa la función something(), la usará al package.something().

También, otra cosa que se debe hablar es el caso del espacio de nombres anidados: suponga que tiene la función package.blabla.woohoo.func(), puede import package.blabla.woohoo y utilizar package.blabla.woohoo.func(), pero que es demasiado complicado. En cambio, la manera más fácil de hacerlo es from package.blabla import woohoo y luego use woohoo.func() o from package.blabla.woohoo import func, y luego use func(). Espero que esto tenga sentido. Si no es así, aquí hay un pedazo de código para ilustrar:

import package.blabla.woohoo 
package.blabla.woohoo.func() 

from package.blabla import woohoo 
woohoo.func() 

from package.blabla.woohoo import func 
func() 

Espero que esto ayude :)

3

La diferencia es el uso de un espacio de nombres para el paquete.

from package import * 
class_in_package() 

vs

import package 
package.class_in_package() 
Cuestiones relacionadas