ana*_*gue 11 python python-import
当我在包中导入子包时,我可以依赖父包也被导入的事实吗?
这样可行
python -c "import os.path; print os.getcwd()"
Run Code Online (Sandbox Code Playgroud)
我不应该明确import os的os.getcwd是可用?
关于包有一个重要的事情,就是加载和可用之间存在差异.
随import a你加载模块a(可以是一个包)并使其在名称下可用a.
随着from a import b你加载模块a(肯定是一个包),然后加载模块a.b,只在名称下可用b.请注意,a在进程中也加载了,因此任何初始化都应该发生.
随着import a.b你加载两个并使两者都可用(在名称a和下a.b).
这是一个很好的问题。如果您查看源代码,os.py则会发现以下行:
sys.modules['os.path'] = path
Run Code Online (Sandbox Code Playgroud)
这就是我们的模块。那是path什么 好吧,这取决于您的操作系统。对于Windows,在此块中定义:
elif 'nt' in _names:
name = 'nt'
linesep = '\r\n'
from nt import *
try:
from nt import _exit
except ImportError:
pass
import ntpath as path
import nt
__all__.extend(_get_exports_list(nt))
del nt
Run Code Online (Sandbox Code Playgroud)
基本上,os.path在这种情况下是特殊的。
简短版: Python在幕后做了一些工作os.path。您可能不应该依赖它来获取其他模块。禅宗的方式是“显式胜于隐式”。
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |