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指向的内存地址更改,而是新增了一个内存地址存放
    对于列表的更改:是在原来列表指定的内存地址上更改
     
     
  • 相关阅读:
    VIM 文本对象选择
    XLA优化实例
    TVM/Relay 的 PartitionGraph()(mod) 函数讨论整理
    OpenCL通用异构开放环境
    LLVM IR 理解
    vue——请求跨域时,vcli2/vcli3设置代理
    【转】SQL 21天实战练习
    bash命令
    linux命令
    jenkins技术
  • 原文地址:https://www.cnblogs.com/steven9898/p/11329309.html
Copyright © 2011-2022 走看看