zoukankan      html  css  js  c++  java
  • python的引用计数分析(二)

    python所有对象引用计数被减少1的情况:

    一.对象的别名被赋予新的对象;

    a = 23345455  # 增加了一个引用
    b = a  # 增加了一个引用
    print(sys.getrefcount(a))
    b = 1.4  # 减少了一个23345455整数的引用
    print(sys.getrefcount(a))
    结果:3;2
    二.对象的别名被显式销毁;
    a = 23345455  # 增加了一个引用
    b = a  # 增加了一个引用
    list = [a, b]  # 增加了2个引用
    del a
    print(sys.getrefcount(b))
    结果:4

    说明:直接使用del关键字或者del()函数;注意:上述代码手动销毁的是被赋值引用的a,但是在列表里的a不会被销毁。

    三.一个对象离开它的作用域;

    a = 23345455  # 增加了一个引用
    b = a  # 增加了一个引用
    print(sys.getrefcount(a))  # 执行完毕后引用销毁
    print(sys.getrefcount(a))

    结果:3;3

    说明:a作为参数传递到sys.getrefcount(a)函数中,只在函数中起作用,一旦执行完毕就会销毁。

    四.对象所在的容器被销毁,或从容器中删除对象;

    # 增加了一个引用
    a = 23345455
    # 增加了一个引用
    b = a
    list = [a, b]  # 增加了2个引用
    del list
    print(sys.getrefcount(b))

    结果:3

    所有的引用计数加一的情况: python的引用计数分析(一)

     
  • 相关阅读:
    2015-04-10一些知识点
    2015-04-07一些知识点
    斐波那契数列算法
    进制转换算法
    Java中transient有何作用?
    RandomAccessFile的使用
    Java各种类型占用的字节数
    LineNumberReader类的使用
    PreparedStatement和Statement的区别
    ResultSet几种类型的区别
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/7460883.html
Copyright © 2011-2022 走看看