zoukankan      html  css  js  c++  java
  • 三、python对字符串和集合的内存垃圾回收机制

    变量声明:
    name1 = "andy"
    name2 = name1
     
    这个时候我把name1的值给改成了“tom”,问现在name2的值是什么?为什么?
    答:andy,因为你把name1的值改了相当于你将name1指向了一个新的叫做tom的内存地址,但name2仍然指向旧的andy的内存地址(字符串)。java和c#同理
    如下
    >>> name1 = "andy"
    >>> name2 = name1
    >>> id(name1)
    47729824
    >>> id(name2)
    47729824
    >>> name1 = "tom"
    >>> id(name1)
    47894176
    >>> id(name2)
    47729824
     
    但是如果name1的值是一个集合的话,那么情况就是相反的,即它还是在原来的内存地址上做更改,如果name1的值发生了变化,name2的值也会跟着变
    >>> name_list = ["rooney","linda","ramos"]
    >>> id(name_list)
    46820168
    >>> name_list.append('pique')
    >>> id(name_list)
    46820168
     
    总结:
    对于字符串的更改:不是说你是在原来字符串指定的内存地址上更改,而是新开了一个内存地址来存储更改的字符串。
    如:andy改成tom,不是在原来andy指向的内存地址更改,而是新增了一个内存地址存放
    对于列表的更改:是在原来列表指定的内存地址上更改
     
     
  • 相关阅读:
    U8g2库I2C总线再次突破性调试成功
    要学的东西太多了,还想学习opencv
    中断知识
    别人做的扫地机器人,有机会我也想搞一台!
    团队冲刺第五天
    第八周学习进度
    团队冲刺第四天
    构建之法1
    团队冲刺第三天
    团队冲刺第二天
  • 原文地址:https://www.cnblogs.com/steven9898/p/11329309.html
Copyright © 2011-2022 走看看