今天我面临一个关于内置函数min()的奇怪错误.我注意到在我的程序执行期间正在重写,所以当min()被覆盖(print(min.__module__))时,我开始在堆栈的每个函数中查找,并且我得到
UnboundLocalError:在赋值之前引用的局部变量'min'
我仍然调试并在提交之间来回检查导致问题的原因.程序取决于不同的模块,但模块与上次程序成功时的模块相同.
我想知道,如何删除内置的"min"?我确信我没有声明任何带有该名称的变量,即使我有,但错误也会有所不同.
del min应该恢复内置(但在我的情况下我得到上面的错误)
builtins ['min']工作(我试过的3个系统中的2个)
知道如何做到这一点?
一般情况下,原因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您自己的变量以外的名称.实际上,出于这个原因,最好避免为自己的目的使用内置命令的名称.
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |