一个奇怪的列表行为

use*_*620 2 python list

我有以下代码:

 d = [1,2,3,4] 
 dpop = d.pop 
 d = ["A","B","C"]
 dpop() # return 4 
 d.pop() #return C
Run Code Online (Sandbox Code Playgroud)

那么,为什么我的第一个名单仍然存在?哪里?

Amb*_*ber 8

存在第一个列表,因为对它的引用由dpop指向的方法对象保存.

基本上,你所做的是这样的:

dpop = [1,2,3,4].pop
Run Code Online (Sandbox Code Playgroud)

pop您存储的方法dpop实例与您最初拥有的列表实例相关联(您可以在其中找到它dpop.__self__).

  • `dpop`是一种绑定方法.原始列表可以通过`dpop .__ self__`访问. (4认同)