Python 如何处理弹出的值?

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

从dict弹出值时:

  • 赋值示例:x=dict1.pop()
  • 这里,弹出的值被分配给x。这是指针分配还是浅拷贝还是深拷贝

  • 没有赋值的示例:dict1.pop()

  • 弹出的值会发生什么变化?当没有赋值时,它会去哪里?

    字典上的
    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后,将进行垃圾回收。弹出的值也一样。