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

Python 3中星号导入的功能形式是什么

Python 3中星号导入的功能形式是什么

没有的功能from whatever import *。实际上,也不存在任何功能import whatever!当你做

mod = __import__(...)

__import__功能仅负责部分工作。它为您提供了一个模块对象,但是您必须将该模块对象分别分配给变量。没有函数可以导入模块 并将其 分配给变量import whatever

在中from whatever import *,有两个部分:

“准备模块对象”部分与中的几乎相同import whatever,并且可以由相同的函数处理__import__。两者之间有一个细微的差异,import *它将加载软件包__all__列表中所有尚未加载的子模块。__import__如果您提供,将为您处理fromlist=['*']

module = __import__('whatever', fromlist=['*'])

分配名称的部分是发生较大差异的地方,同样,您必须自己处理。只要您处于全球范围内,这就非常简单:

if hasattr(module, '__all__'):
    all_names = module.__all__
else:
    all_names = [name for name in dir(module) if not name.startswith('_')]

globals().update({name: getattr(module, name) for name in all_names})

函数作用域不支持分配在运行时确定的变量。

python 2022/1/1 18:32:20 有429人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

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

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

请先登录

推荐问题


联系我
置顶