理论题
每个 Python shell 都有无需声明或创建即可使用的对象,例如 True、False、""、[]、{} 以及整数和 float 的任意组合。
这意味着您可以随时获取他们的 ID。
id(1)
id(42)
id('')
等等
当然,如果你试图获取一个未声明对象的id,你会得到:
id(myobject1)
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
id(myobject1)
NameError: name 'myobject1' is not defined
因为 myobject1 没有指向任何东西,所以它没有定义,也没有 id。
然而,由于数字系统是无限的,因此可以在不声明的情况下使用无限多的对象。因此,所有未声明的对象在以某种身份在程序中使用之前都不可能具有 ID。
这些对象何时获得分配的 ID?
最佳答案
你误解了赋值的概念。
在赋值中,您将一个对象绑定(bind)到一个名称。分配给的所有名称都可以以任何需要的方式使用,未分配的名称不存在,因此不能指向任何东西(包括“无处”)。
使用 id(spam)
,您可以询问 spam
指向的对象,然后询问其 ID。
一个不存在的名称 spam
没有分配给它可以查询其 ID 的对象。
OTOH,每个对象都有一个 ID。
关于python - 未声明的对象何时获得 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863293/