TG wrote:
if I import tom, it is supposed to load functions defined in
tom/__init__.py and make all the modules inside accessible through the
"dot" syntax.
Therefore, this is supposed to work :
?import tom
?help(tom.core)
AttributeError: 'module' object has no attribute 'core'
But if I use the baaaaad star syntax
?from tom import *
?help(core)
this will work.
No, it won't. Try again with a fresh interpreter (no prior imports)
>>from tom import *
core
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'core' is not defined
>>import tom
tom.core
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: 'module' object has no attribute 'core'
Only after an explicit import of tom.core...
>>from tom import core
del core
from tom import *
core
<module 'tom.core' from 'tom/core.py'>
is core added as an attribute to tom and will therefore be copied into the
namespace of a module doing a star-import.
Peter