¿Los siguientes 2 estados de importación tienen alguna diferencia? ¿O lo mismo?¿Alguna diferencia entre estas 2 importaciones?
from package import *
import package
¿Los siguientes 2 estados de importación tienen alguna diferencia? ¿O lo mismo?¿Alguna diferencia entre estas 2 importaciones?
from package import *
import package
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 :)
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()
Son muy diferentes, véase [Importar módulos de Python] (http://effbot.org/zone/import-confusion.htm). –