“ del sys.modules [module]”实际上是做什么的?

“ del sys.modules [module]”实际上是做什么的?,第1张

“ del sys.modules [module]”实际上是做什么的?

sys.modules
是用于 规范 数据结构的 Python可访问引用
,用于跟踪导入了哪些模块。从该词典中删除名称意味着将来尝试导入该模块将导致Python从头开始加载该模块。 __

换句话说,每当您使用一条

import
语句时,Python要做的第一件事就是检查
sys.modules
引用字典是否已经有该模块的条目,然后继续下一步(绑定当前名称空间中的名称),而无需先加载该模块。如果您从中删除条目
sys.modules
,则Python将找不到已加载的模块,然后再次加载。

请注意此处有关 Python可访问性
的谨慎措辞。实际的字典存在于Python堆中,

sys.modules
并且只是对其的一种引用。您通过分配给来将该引用 替换
为另一本词典
sys.modules
。但是,口译员对此有 更多的参考
;它们只是无法从Python代码
ctypes
访问,反正不是没有技巧才能访问C-API。

请注意,这已 明确记录在案

但是,替换字典不一定能按预期工作,并且从字典中删除必要项目可能会导致Python失败。

从C-API,您必须使用

PyThreadState_Get()->interp->modules
获取对字典的内部引用。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5439945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存