我有以下代码:
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)
那么,为什么我的第一个名单仍然存在?哪里?
存在第一个列表,因为对它的引用由dpop指向的方法对象保存.
基本上,你所做的是这样的:
dpop = [1,2,3,4].pop
Run Code Online (Sandbox Code Playgroud)
pop您存储的方法dpop实例与您最初拥有的列表实例相关联(您可以在其中找到它dpop.__self__).