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

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

“ 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获取对字典的内部引用。

其他 2022/1/1 18:34:14 有409人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

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

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

请先登录

推荐问题


联系我
置顶