Skip to main content
 首页 » 编程设计

python之如何删除python内置函数调用某个函数时 min() 消失

2025年05月04日17mengfanrong

今天我遇到了一个关于内置函数 min() 的奇怪错误。 我注意到它在我的程序执行期间被重写,所以当 min() 被重写时,我开始在堆栈的每个函数中寻找 (print(min.__module__)),我得到了 UnboundLocalError:赋值前引用了局部变量“min” 我仍在调试并在提交之间来回检查是什么导致了问题。程序依赖不同模块,但模块与上次程序成功时相同。

我想知道,如何删除内置的“min”?我确信我没有用那个名字声明任何变量,即使我声明了,错误也会不同。 del min 应该恢复内置(但在我的例子中我得到了上面的错误) builtins['min'] 有效(在我尝试过的 3 个系统中的 2 个中)

知道这是怎么可能的吗?

请您参考如下方法:

一般情况下,local variable referenced before assignment的原因不是有人删除了min,而是你赋值给了一个名为的变量min 在函数的某处 after 您收到该错误的点。 (赋值也可以在 if 分支中,在错误之前,但根据我的经验,我提出的第一个场景更有可能。)

因为你已经在函数的某个地方赋值给它并且没有声明它是全局的,所以它是该函数内部的一个局部变量,并且它的所有使用都指的是那个局部变量,而不是内置函数。但是,您尚未为其分配一个值,因此 Python 不知道您希望它具有什么值。

例子:

def test(): 
     x = min(1, 2, 3)                   # error message here 
     y = max(1, 2, 3) 
     # ... lots of code might go here 
     min = x if x < y else y            # local assignment here 
 
test() 

解决方法很简单。不要那样做。为您自己的变量使用 min 以外的名称。事实上,出于这个原因,最好避免将内置函数的名称用于您自己的目的。