gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:39 25 4
gpt4 key购买 nike

今天我遇到了一个关于内置函数 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 以外的名称。事实上,出于这个原因,最好避免将内置函数的名称用于您自己的目的。

关于python - 如何删除python内置函数?调用某个函数时 min() 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com