gpt4 book ai didi

python - 删除功能

转载 作者:太空狗 更新时间:2023-10-29 17:53:30 24 4
gpt4 key购买 nike

我正在尝试创建一个函数来删除另一个函数。

 def delete_function(func):
del func

是我目前所拥有的,但由于某种原因它不起作用。

def foo():
print("foo")
delete_function(foo)

似乎并没有成功。我知道一个人可以很容易地做到这一点,只是

del(foo)

但我正在尝试以不同的方式进行。怎么办?

最佳答案

删除函数并不是真正对函数本身做的事情;这是你对它所在的命名空间所做的事情。(就像从列表中删除数字 3 不是你对数字 3 所做的事情,而是你对列表所做的事情。)

假设你说

def foo(x): return 1
bar = foo

然后(或多或少)您有两个名称,foobar,用于完全相同的功能。现在假设您调用 delete_function(foo)delete_function(bar)完全相同的东西,即一个函数对象,被传递给delete_function。但是您实际上想要删除的是名称 foobar 与该对象之间的关联——并且没有可能的方法 delete_function (但是你定义它) 可以知道它是 foo 还是 bar 或者你想要摆脱的其他东西。

(好吧......实际上,有。你可以做一些讨厌的骇人听闻的事情,让 delete_function 中的代码知道更多关于它是如何被调用的。但不要想想着他们。)

所以。您的选择如下。 (1) 讨厌的 hacky 事情,正如刚才提到的。不。 (2) 传递 delete_function 不是函数对象,而是有关函数名称和您试图从中删除它的对象的信息。这是丑陋和笨拙的。 (3) 不要打扰。

我强烈推荐 #3,除非您这样做的唯一原因是为了更多地了解 Python 的工作原理。在后一种情况下,一个好的起点可能是 http://docs.python.org/reference/executionmodel.html。 .

关于python - 删除功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367414/

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