假设
bar是中的模块或包
foo,没有区别*,那就没关系。这两个语句具有完全相同的结果:
>>> import os.path as path>>> path<module 'posixpath' from '/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/posixpath.pyc'>>>> from os import path>>> path<module 'posixpath' from '/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/posixpath.pyc'>
如果
bar不是模块或软件包,则第二种形式将不起作用;引发回溯:
>>> import os.walk as walkTraceback (most recent call last): File "<stdin>", line 1, in <module>importError: No module named walk
*在Python 3.6及更高版本中,包含其他模块的软件包的初始化顺序存在一个错误,即在软件包 的加载阶段,
import contained.module.something as alias在子模块中使用 该软件包 会失败,
from contained.module import something as alias而不会失败。有关该问题以及Python问题#23203和#30024的说明性示例
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)