本帖最后由 阿奇_o 于 2022-3-22 00:32 编辑
我们无法直接使用"对象",而是通常是用一个"字符名/变量名"去使用(引用)它
—— 对象其实是一个抽象的概念,一个对象 一旦被创建就至少包含:对象的type, value, 和 id
以及与之绑定的名字name(基本上都有,以方便"以名唤之";当然也可没有,那是unbound object...)
del a 其实只是解除了 a 这个名字与那个字典对象之间的绑定关系——断开了这种绑定关系,对于该对象来说,就是"引用减1"。
你这里 一开始 a, b 都 绑定到 那个字典对象上(而不是b绑到a上)。 del a 只是解除了a与之的引用关系,b 还是绑定着的。
除了最常见的赋值语句,会创建这种绑定/引用关系,def, class, import 等语句,都可以建立这种 名字name → 对象object 的绑定关系。
- >>> def func(): # def语句 既创建了一个函数对象function object,也同时将 func 这名字 绑定到该函数对象上
- print("Hey")
- >>> func # 函数对象(以名唤之)
- <function func at 0x000001F71ACDD1F8>
- >>> func() # 以名唤之,然后执行其函数体
- Hey
- >>> del func # 解除绑定(所绑定的函数对象会"引用减1";若引用为0,将进入"垃圾回收机制")
- >>> func() # 已解除绑定,无法再以名唤之
- Traceback (most recent call last):
- File "<pyshell#9>", line 1, in <module>
- func()
- NameError: name 'func' is not defined
- >>>
复制代码