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

lib*_*lib 1 python built-in

今天我面临一个关于内置函数min()的奇怪错误.我注意到在我的程序执行期间正在重写,所以当min()被覆盖(print(min.__module__))时,我开始在堆栈的每个函数中查找,并且我得到 UnboundLocalError:在赋值之前引用的局部变量'min' 我仍然调试并在提交之间来回检查导致问题的原因.程序取决于不同的模块,但模块与上次程序成功时的模块相同.

我想知道,如何删除内置的"min"?我确信我没有声明任何带有该名称的变量,即使我有,但错误也会有所不同. del min应该恢复内置(但在我的情况下我得到上面的错误) builtins ['min']工作(我试过的3个系统中的2个)

知道如何做到这一点?

kin*_*all 5

一般情况下,原因local variable referenced before assignment并不是某人已删除min,而是您在收到该错误之后已分配给min函数中某个名称的变量.(在错误发生之前,分配也可能在未采用的分支中,但根据我的经验,我提出的第一个方案更有可能.)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()
Run Code Online (Sandbox Code Playgroud)

解决方案很简单.不要那样做.使用min您自己的变量以外的名称.实际上,出于这个原因,最好避免为自己的目的使用内置命令的名称.

  • **"解决方案很简单.不要这样做."**一个真正的程序员 - 甚至他的答案都是极其可重复使用的!确实干了 (2认同)