栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从Python中的代码对象生成模块对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从Python中的代码对象生成模块对象

正如评论已经表明的那样,在当今的Python中,实例化没有内置名称的类型的首选方法是调用通过标准库中的类型模块获得的类型:

>>> import types>>> m = types.ModuleType('m', 'The m module')

请注意,这并 不会 自动插入新的模块

sys.modules

>>> import sys>>> sys.modules['m']Traceback (most recent call last):  File "<stdin>", line 1, in <module>KeyError: 'm'

这是您必须手动执行的任务:

>>> sys.modules['m'] = m>>> sys.modules['m']<module 'm' (built-in)>

这很重要,因为模块的代码对象通常会 添加到模块
执行

sys.modules
-例如,完全正确地引用此类代码,如果您忘记了此步骤
sys.modules[__name__]
,将失败(
KeyError
)。
完成 此步骤并进行
m.__file__
修改后,

>>> pre = compile("a=23", "m.py", "exec")>>> exec pre in m.__dict__>>> m.a23

exec
当然,如果您使用的是Python 3,则为Python
3的等效函数;-)当然是正确的(当然,通常您会通过精巧的方法而不是编译字符串来获取代码对象,但是这对您的问题并不重要;-)。

在旧版本的Python中,您一开始会使用

new
模块而不是
types
模块来创建新的模块对象,但
new
自Python
2.6起已弃用该模块,并在Python 3中将其删除。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号