美文网首页
Python中的变量与垃圾回收机制

Python中的变量与垃圾回收机制

作者: 编程自习室 | 来源:发表于2018-12-26 10:06 被阅读2次
    python1226.png

    Python与Java的变量本质上不一样,Python的变量本事是个指针。当Python解释器执行number=1的时候,实际上先在内存中创建一个int对象,然后将number指向这个int对象的内存地址,也就是将number“贴”在int对象上,测试用例如下:

    1 number = [1, 2, 3]
    2 demo = number
    3 demo.append(4)
    4 print(number)
    5 # [1, 2, 3, 4]
    

    ==和is的区别就是前者判断的值是否相等,后者判断的是对象id值是否相等。

     1 class Person(object):
     2     pass
     3 
     4 p_0 = Person()
     5 
     6 p_1 = Person()
     7 
     8 print(p_0 is p_1) # False
     9 print(p_0 == p_1) # False
    10 print(id(p_0))    # 2972754016464
    11 print(id(p_1))    # 2972754016408
    12 
    13 li_a = [1, 2, 3, 4]
    14 li_b = [1, 2, 3, 4]
    15 
    16 print(li_a is li_b) # False
    17 print(li_a == li_b) # True
    18 print(id(li_a))     # 2972770077064
    19 print(id(li_b))     # 2972769996680
    20 
    21 a = 1
    22 b = 1
    23 
    24 print(a is b)  # True
    25 print(a == b)  # True
    26 print(id(a))   # 1842179136
    27 print(id(b))   # 1842179136
    

    Python有一个优化机制叫intern,像这种经常使用的小整数、小字符串,在运行时就会创建,并且全局唯一。
    Python中的del语句并不等同于C++中的delete,Python中的del是将这个对象的指向删除,当这个对象没有任何指向的时候,Python虚拟机才会删除这个对象。

    相关文章

      网友评论

          本文标题:Python中的变量与垃圾回收机制

          本文链接:https://www.haomeiwen.com/subject/vebclqtx.html