作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我应该使用
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 contains.module.something as alias
在子模块中会失败,而 from contains.module import something as alias
不会。见 Imports in __init__.py and `import as` statement有关该问题的一个非常说明性的示例,以及 Python 问题 #23203和 #30024 .
关于python - from ... import OR import ... 对于模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22245711/
我是一名优秀的程序员,十分优秀!