Python 为什么在修改列表实例时,存储对pop的函数调用不返回最后一项?
我有以下代码:Python 为什么在修改列表实例时,存储对pop的函数调用不返回最后一项?,python,list,Python,List,我有以下代码: d = [1,2,3,4] dpop = d.pop d = ["A","B","C"] dpop() # return 4 d.pop() #return C 为什么我的第一个列表中定义的列表仍然存在,它存在于何处?第一个列表存在,因为对它的引用由dpop指向的方法对象保留 基本上,您所做的是: dpop = [1,2,3,4].pop 存储在dpop中的pop方法的实例与您最初拥有的列表实例相关联(您可以在dpop.\uuuu self\uuuu中找到它)
d = [1,2,3,4]
dpop = d.pop
d = ["A","B","C"]
dpop() # return 4
d.pop() #return C
为什么我的第一个列表中定义的列表仍然存在,它存在于何处?第一个列表存在,因为对它的引用由
dpop
指向的方法对象保留
基本上,您所做的是:
dpop = [1,2,3,4].pop
存储在
dpop
中的pop
方法的实例与您最初拥有的列表实例相关联(您可以在dpop.\uuuu self\uuuu
中找到它)。您保留了对boundmethod
对象的引用,该对象本身保留了对其实例的引用。有关Python方法的更多信息,请参见cf。Python中的变量名只是粘贴在对象上的标签。它们不引用内存中的任何固定空间,就像在C中一样。dpop
是一种绑定方法。原始列表可以通过dpop.\uuuu self\uuuu
访问.Amber,@SvenMarnach有趣的回答!