我应该使用
from foo import bar
要么
import foo.bar as bar
当导入模块,并和有改变名字没有必要/愿望(bar
)?
有什么区别吗?有关系吗?
假设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 walk
Traceback (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的说明性示例,请参见__init__.py中的Imports和“ import as”语句。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句