gpt4 book ai didi

python - 当为变量定义内置函数时,del 对内置函数做了什么?

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:21 25 4
gpt4 key购买 nike

如果有人使用 python 内置函数作为变量,删除变量似乎会将术语的定义恢复为原始定义。例如:

set = 1
print(set)
del set
a = set([1,2,3])
print(a)

结果:

1
{1, 2, 3}

但是,当您从头开始删除内置函数时,它就不再定义了:

del set
a = set([1,2,3])
print(a)

结果:NameError:名称“set”未定义

我知道使用内置函数作为变量是不好的做法,但我对这个设计决定很好奇:

如果 python 源代码可以通过将删除的变量分配给它们的原始内置值来智能地恢复已删除的变量,为什么代码允许在我的第二个示例中删除内置值?允许删除内置函数有什么可能的用途?

不,我没有这方面的真实用例;我只想了解设计决策。

最佳答案

您在第二个示例中得到的 NameError 不是因为在删除 set 后尝试使用它; NameError 来自试图删除 set

del some_variable 尝试取消绑定(bind)当前命名空间中的 some_variable。在函数或类之外,这意味着当前模块的模块全局变量。 set 的内置绑定(bind)位于内置命名空间中,可通过 builtins 模块访问; del set 不会删除它。

由于 del set 找不到要解除绑定(bind)的 set 变量,它会抛出一个 NameError。

关于python - 当为变量定义内置函数时,del 对内置函数做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49987815/

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