我现在的理解是,当一个人写道from foo import bar,foo这是一个包,有__init__.py,都会有__init__.py它的资源后自动处理bar将被导入.如果从命令提示符,我写python manage.py,并在该模块调用from foo import bar,__init__.py属于foo包,是变量,__name__然后等于包名称?foo在这种情况下?
在__init__包的模块中,__name__设置为包的名称; 例如,模块存储在下面的内容sys.modules.
对于包foo,__name__设置为'foo':
>>> import os
>>> os.mkdir('foo')
>>> open('foo/__init__.py', 'w').write('print "__name__:", __name__')
>>> open('foo/bar.py', 'w').write('# nothing done here')
>>> from foo import bar
__name__: foo
>>> import sys
>>> sys.modules['foo']
<module 'foo' from 'foo/__init__.py'>
>>> sys.modules['foo'].__name__
'foo'
Run Code Online (Sandbox Code Playgroud)
请注意,每个Python模块都有这样一个__name__变量; 甚至是最初的脚本.如果运行python manage.py初始脚本作为__main__模块加载,那么*中manage.py的名称设置为'__main__'; 此名称不会随脚本导入的内容而更改.
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |