Python 如何处理弹出的值?
从dict弹出值时:Python 如何处理弹出的值?,python,python-3.x,Python,Python 3.x,从dict弹出值时: 赋值示例:x=dict1.pop() 这里,弹出的值被分配给x。这是指针分配还是浅拷贝还是深拷贝 没有赋值的示例:dict1.pop() 弹出的值会发生什么变化?当没有赋值时,它会去哪里?字典上的pop方法返回对实际值的引用,而不是它的副本:因此is通过标识确认它与原始值相同 >>obj=object() >>>d={'foo':obj} >>>d.pop(‘foo’)是obj 真的 如果您不分配结果或在任何地方使用它,那么它将被默默地丢弃。您可以使用sys.getref
弹出的值会发生什么变化?当没有赋值时,它会去哪里?字典上的
pop
方法返回对实际值的引用,而不是它的副本:因此is
通过标识确认它与原始值相同
>>obj=object()
>>>d={'foo':obj}
>>>d.pop(‘foo’)是obj
真的
如果您不分配结果或在任何地方使用它,那么它将被默默地丢弃。您可以使用sys.getrefcount
观察到,弹出该值后,对该值的引用减少了一个,因为字典中不再有对该值的引用,而在不使用结果的情况下弹出该值意味着不会创建新的引用:
导入系统
obj=对象()
d={'foo':obj}
打印('弹出前:',sys.getrefcount(obj))
d、 流行音乐(‘foo’)
打印('弹出后:',sys.getrefcount(obj))
输出(由于getrefcount
的参数,refcount膨胀了1):
弹出前的:3
爆炸后:2
1)这是一项常规作业,如n=1;p=n;s=[]代码>,依此类推。对象的引用计数达到0后,将进行垃圾回收。弹出的值也一样。