• python动态类型简介


      

    1、a = [1,2,3]其中a是变量名,[1,2,3]是对象,a通过一个指向[1,2,3]的指针引用了对象[1,2,3].
    2、每一个对象都有两个标准的头部信息,一个是标示这个对象的类型。另外一个是用来决定是不是可以回收这个对象。
    3、类型属于对象,而不属于变量,所以a=3,a='spam',a=[1,2,3]没有类型的变量a可以指向不同类型对象
    4、垃圾回收机制:每一个对象内部都有一个计数器,这个计数器中记录的是引用该对象的引用数目,一旦这个对象的计数器被设置为0,这个对象的内存空间自动回收。
    5、案例:
    	a=3
    	b=a
    	a=a+2
    	输出:a=5,b=3
    	分析:当给一个变量赋予一个新的值是,并不是替换原始的对象,而是让这个变量去引用完全不同的对象。就是说a=a+2并不是修改a指向的那块内存区域,而是在另外一个地方重新创建一个新的值。
    6、复制
    	列表L,集合S,字典D都有都有copy方法,例如L.copy(),S.copy(),D.copy()
    	模块copy中有两个复制方法:
    	一个会死copy.copy(L)
    #7、在python中缓存并复用了小的整数和小的字符串
    
                    例如:
    
                    L = [1,2,3,4]
    
                    M = L
    
                    print(L == M)  #输出true
    
                    print(L is M)  #输出True
    
                    这表示L和M 指向了同一个对象 ,并且值相等
    
                    L = [1,2,3,4]
    
                    M = [1,2,3,4]
    
                    print(L == M)  #输出true
    
                    print(L is M)  #输出False
    
                    这表示L和M值相等,但是不指向同一个对象
    
                    X = 42
    
                    Y = 42
    
                    print(X == Y)  #输出true
    
                    print(X is Y)  #输出True
    
                    这表示X和Y 指向了同一个对象 ,并且值相等这是因为小的整数和字符串被缓存了
    
    #8、如果想查看一个对象被引用的次数,则可以通过sys模块的getrefcount方法
    
                    import sys
    
                    print(sys.getrefcount(对象))  #查看这个对象被引用的次数
    

      

  • 相关阅读:
    关于集合中的实现细节
    数组与内存控制笔记
    python进阶------进程线程(五)
    python进阶------进程线程(四)
    python进阶------进程线程(三)
    python进阶-------进程线程(二)
    python进阶------进程线程(一)
    python进阶---Python中的socket编程
    Python基础---python中的异常处理
    Python进阶---面向对象第三弹(进阶篇)
  • 原文地址:https://www.cnblogs.com/hbcb533/p/3669280.html
Copyright © 2020-2023  润新知