您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python模块导入-为什么仅在显式导入时才提供组件?

Python模块导入-为什么仅在显式导入时才提供组件?

快速解答:IO是一个子模块。子模块需要从父模块显式导入。

长答案:从python文档的5.4.2节:

当使用任何机制(例如importlib API,import或import-from语句或内置 ())加载子模块时,在父模块的名称空间中将绑定到子模块对象。例如,如果包spam具有子模块foo,则在导入spam.foo之后,spam将具有绑定到子模块的属性foo。假设您具有以下目录结构:

spam/
    __init__.py
    foo.py
    bar.py

spam / .py中包含以下几行:

from .foo import Foo
from .bar import Bar

后执行以下命令,将名称绑定绑定到垃圾邮件模块中的foo和bar:

>>>
>>> import spam
>>> spam.foo
<module 'spam.foo' from '/tmp/imports/spam/foo.py'>
>>> spam.bar
<module 'spam.bar' from '/tmp/imports/spam/bar.py'>

鉴于Python熟悉的名称绑定规则,这似乎令人惊讶,但这实际上是导入系统的基本功能。不变的假设是,如果您拥有sys.modules [‘spam’]和sys.modules [‘spam.foo’](就像在上述导入之后一样),则后者必须显示为前者的foo属性

python 2022/1/1 18:45:20 有308人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶