首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当为变量定义内建件时,模型对它们做了什么?

当为变量定义内建件时,模型对它们做了什么?
EN

Stack Overflow用户
提问于 2018-04-23 18:36:18
回答 1查看 62关注 0票数 3

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

代码语言:javascript
复制
set = 1
print(set)
del set
a = set([1,2,3])
print(a)

结果:

代码语言:javascript
复制
1
{1, 2, 3}

但是,当您从一开始删除内置的内容时,就不再定义它了:

代码语言:javascript
复制
del set
a = set([1,2,3])
print(a)

结果:NameError: name 'set' is not defined

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

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

不,我没有这个真实世界的用例;我只是想了解设计决策。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-23 18:48:24

在第二个示例中获得的NameError不是删除后尝试使用set,而是尝试删除set

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

因为del set找不到要解除绑定的set变量,所以它会抛出一个NameError。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49987815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档