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 *?"