2011-02-26 27 views

Respuesta

31

Si import somemodule los globales contenidos estarán disponibles a través del somemodule.someglobal. Si from somemodule import * TODOS sus valores globales (o los que figuran en __all__ si existe) se harán globales, es decir, puede acceder a ellos utilizando someglobal sin el nombre del módulo al frente.

Se desaconseja el uso de from module import *, ya que satura el alcance global y si importa elementos de varios módulos, es probable que surjan conflictos y sobrescriba las clases/funciones existentes.

0

pregunta común con muchos de preguntas frecuentes para responder ... aquí es uno: http://effbot.org/zone/import-confusion.htm

Esencialmente para responder a su pregunta específica la segunda forma (from modx import *) se obtiene sólo los elementos públicos en MODx

15

Si a define a.b y a.c ...

import a 
a.b() 
a.c() 

vs

from a import b 
b() 
c() # fails because c isn't imported 

vs

from a import * 
b() 
c() 

Tenga en cuenta que from foo import * es generalmente mal visto desde:

  1. Se pone las cosas en el espacio de nombres global sin que le da un control preciso
  2. Puede causar colisiones, debido a todo lo que está en el espacio de nombres global
  3. que hace que sea poco claro lo que realmente está definido en el archivo actual , ya que la lista de lo que define puede variar según lo que se importe.
Cuestiones relacionadas