2011-01-08 6 views
5

¿Cuál es la diferencia entre estas dos líneas?`de x importación y` contra` de x.y importación * `

from PyQt4 import QtGui 
from PyQt4.QtGui import * 

La primera línea es "importar clase QtGui desde el módulo PyQt4".
¿Pero qué significa la segunda línea? "Importar todo desde QtGui del módulo PyQt4".
¿No es lo mismo?

+2

primer módulo de importación en el espacio de nombres actual, segundo importaciones de todo, desde que los módulos propio espacio de nombres en el espacio de nombres actual. –

+0

Tenga en cuenta que el segundo formulario está muy desaconsejado: consulte http://docs.python.org/howto/doanddont.html#from-module-import para saber por qué. – delnan

Respuesta

10

La primera instrucción importa el módulo especificado en el espacio de nombre actual.
La segunda declaración importa todo, desde el módulo especificado al espacio de nombre actual.

Así 1) significa que todavía necesita hacer referencia explícita a las clases/funciones, etc a través del espacio de nombres del módulo
2) significa que no

Aquí está un comparar y contrastar que muestra la diferencia

1)

import math 

d = math.sqrt(10) 

2)

from math import * 

d = sqrt(10) 

Tenga en cuenta que usted puede optar por importar un símbolo específico de un módulo si quiere decir

from math import sqrt 
d = sqrt(10) 
0

Los paquetes pueden exportar más de una cosa. La diferencia es que la primera línea importa un solo objeto del paquete, la segunda importa todo. Si el paquete que está importando solo exporta una cosa, los dos son sinónimos.