What Is The Difference Between Import Modx And From Modx Import *?
Solution 1:
If you import somemodule
the contained globals will be available via somemodule.someglobal
. If you from somemodule import *
ALL its globals (or those listed in __all__
if it exists) will be made globals, i.e. you can access them using someglobal
without the module name in front of it.
Using from module import *
is discouraged as it clutters the global scope and if you import stuff from multiple modules you are likely to get conflicts and overwrite existing classes/functions.
Solution 2:
If a
defines a.b
and a.c
...
import aa.b()
a.c()
vs.
from a import b
b()
c() # fails because c isn't imported
vs.
froma import *
b()
c()
Note that from foo import *
is generally frowned upon since:
- It puts things into the global namespace without giving you fine control
- It can cause collisions, due to everything being in the global namespace
- It makes it unclear what is actually defined in the current file, since the list of what it defines can vary depending on what's imported.
Solution 3:
Common question with many faq's to answer... here is one: http://effbot.org/zone/import-confusion.htm
Essentially to answer your specific question the second form (from modx import *
) you get only the public items in modx
Post a Comment for "What Is The Difference Between Import Modx And From Modx Import *?"