在Python中重新加载内置函数

2024-04-18 04:55:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在探索Python中名称空间的概念,我无法解释以下问题:重新加载builtins不能有效地重新加载模块。下面是一个例子:

import importlib as il
import os

import mymodule
mymodule.x = 6
print(mymodule.x)
mymodule = il.reload(mymodule)
print(mymodule.x)


import builtins
builtins.print = lambda x : os.system('echo hello')
builtins.print('hi')
builtins = il.reload(builtins)
builtins.print('hi')

其中mymodule只包含赋值x = 5。输出为:

^{pr2}$

也许这是个愚蠢的问题,但为什么会有这种行为呢?在


Tags: 模块import名称概念os空间importlibhi
1条回答
网友
1楼 · 发布于 2024-04-18 04:55:37

docs

It is generally not very useful to reload built-in or dynamically loaded modules. Reloading sys, __main__, builtins and other key modules is not recommended. In many cases extension modules are not designed to be initialized more than once, and may fail in arbitrary ways when reloaded.

相关问题 更多 >