想要弄清楚内存相关的问题,就要理清楚:变量、内存地址、值之间的关系:
1.程序里什么时候分配新的内存地址?
答:1.定义一个变量,内存就开辟一个内存空间,分配一个内存地址.
      特殊:
          如:a=687
          a=197
            print(a)# 输出197
          这是2内存个地址,输出a,是输出第二a的个值,a指向值为197的内存地址,第一个a的值687 还存在,但是a不指向它了, 2.一个列表里的变量存放的是啥?
答:放的是变量的内存地址 3.变量的类型可以是哪些?
 答:整数,字符串,列表,字典,元组,所有数据类型 4.判断操作是 赋值 还是 修改变量的值?
答:4.1 如果是赋值则:开辟新的内存空间,分配新的内存地址(python小数据池除外) 请体会如下3种赋值的不同 第一种:开辟了新的内存空间

第二种:赋值是把v1的内存地址给v2

第三种:(记)python小数据池中只要数值相同,内存地址就相同,这是python的缓存机制

4.2 如果是修改变量本身的值:

5.python的小数据池对内存地址的影响?
答:数据范围以内的数[-5,256],只要数值相同,内存地址就相同 补充:
# 按理 v1 和 v2 应该是不同的内存地址。特殊:
1. 整型: -5 ~ 256
2. 字符串:"alex",'asfasd asdf asdf d_asdf ' ----"f_*" * 3 - 重新开辟内存 6.python变量数值垃圾回收机制
如 a=30
  a=20
a被赋了新值 20 ,之前的值 30 会被解释器垃圾回收机制自动 回收
##################################   分隔符   #####################################
变量是为了写代码方便理解,其实是变量指向一个值的内存地址, 重新赋值,原来的值没有改,还在内存中,只是没有变量,指向它的内存地址了, 一个值对应一个内存地址,两个一样的值也是2个地址(python小数据池除外)
1.不可修改的数据类型,string...等、或其他 内置函数 操作后 ,产生新的值, 旧值没有改变,新值没有变量指向

##################################   分隔符   #####################################

'''
23. v1 = '人生苦短,我用Python'  # v1 是一个变量,指向'人生苦短,我用Python'的内存地址
   v2 = [1,2,3,4,v1]   #注 这里的v1,放的是v1的内存地址,
v1 = "人生苦短,用毛线Python"
print(v2) # 输出 [1, 2, 3, 4, '人生苦短,我用Python'] 解释:v1 = "人生苦短,用毛线Python" 是对v1 赋值,在内存中开辟了一个新的内存空间,即第一个v1 和 第二个 v1 的内存地址不一样,
而 v2中元素v1存放的是第一个v1的内存地址所对应的值。
'''
'''
24. 看代码写结果并解释原因
data_list = []
data = {}
for item in range(10):
data['user'] = i
data_list.append(data)
print(data_list) 输出:[{'user':9},{'user':9},{'user':9},{'user':9},...] 一共9个
解释:data是指向一个内存地址,append是把data添加到空列表data_list,
data_list = [data,data,data,data,data,data,data,data,data,data]
data指向一个内存地址,内存地址的下的值被修改,所以最后data={'user':9}
data_list=[{'user':9},{'user':9},{'user':9},{'user':9},...] 一共9个
'''

'''
25. 看代码写结果并解释原因
data_list = []
for item in range(10):
data = {}
data['user'] = i
data_list.append(data)
print(data_list) 输出: [{'user':0},{'user':1},{'user':2},{'user':3},{'user':4},{'user':5},,{'user':6},{'user':7},{'user':8},{'user':9}]
每次循环经过data = {} ,都添加加一个新的字典变量,开辟一个新的内存地址,再对字典添加键值对,最后追加到列表data_list中

对比
第一种
第二种


python内存相关问题的更多相关文章

  1. Python内存相关

    Python内存相关 示例一: v1 = [1, 2, 3] v2 = [1, 2 ,3] v1 = 123 v2 = 123 v1 = "dogfa" v2 = "do ...

  2. python内存相关以及深浅拷贝讲解

    3.9 内存相关 3.9.1 id,查看内存地址 >>> v1 = [11,22,33] >>> v2 = [11,22,33] >>> prin ...

  3. python 内存问题(glibc库的malloc相关)

    题记: 这是工作以来困扰我最久的问题.python 进程内存占用问题. 经过长时间断断续续的研究,终于有了一些结果. 项目(IM服务器)中是以C做底层驱动python代码,主要是用C完成 网络交互部分 ...

  4. Python内存优化

    实际项目中,pythoner更加关注的是Python的性能问题,之前也写过一篇文章<Python性能优化>介绍Python性能优化的一些方法.而本文,关注的是Python的内存优化,一般说 ...

  5. Python内存优化:Profile,slots,compact dict

    实际项目中,pythoner更加关注的是Python的性能问题,之前也写过一篇文章<Python性能优化>介绍Python性能优化的一些方法.而本文,关注的是Python的内存优化,一般说 ...

  6. python文件相关操作

    Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中 ...

  7. 记一次调试python内存泄露的问题

    转载:http://www.jianshu.com/p/2d06a1a01cc3 这两天由于公司需要, 自己编写了一个用于接收dicom文件(医学图像文件)的server. 经过各种coding-de ...

  8. Python内存分配器(如何产生一个对象的过程)

    目录 内存分配器 Python分配器分层 第零层--通用的基础分配器 第一层--低级内存分配器 内存结构 arena pool new arena usable_arenas和unused_arena ...

  9. 【python测试开发栈】—python内存管理机制(二)—垃圾回收

    在上一篇文章中(python 内存管理机制-引用计数)中,我们介绍了python内存管理机制中的引用计数,python正是通过它来有效的管理内存.今天来介绍python的垃圾回收,其主要策略是引用计数 ...

随机推荐

  1. oracle错误-ORA-12519, TNS:no appropriate service handler found

    转自:https://blog.csdn.net/u013147600/article/details/48380841

  2. Linux-CentOS 学习的坎坷路 (一) 网络配置篇

    自己学习的地址:http://www.imooc.com/view/175 学到2.8章节,配置IP这一块,妈蛋,他直接跳过了,都不知道怎么配置,无奈,只能Search 先是找到配置IP的方法: ht ...

  3. TCP/IP 笔记 7 Ping

    lenovo-myc@lenovomyc-Lenovo-Product:~$ ping www.baidu.com PING www.a.shifen.com (() bytes of data. 这 ...

  4. 【转】TinyMCE(富文本编辑器)

    效果预览:http://www.tinymce.com/tryit/full.php [转]TinyMCE(富文本编辑器)在Asp.Net中的使用方法 转自:http://www.cnblogs.co ...

  5. jQuery-图片的放大镜显示效果(需要大小图)

    1.default.aspx <%@ Page Language=.2em; height:.1em; text-align:center; font-size:128px;}    .zxx_ ...

  6. git 本地代码到github(转)

    git 本地代码到github   一·什么是gitHub? 官网解释:gitHub是一个让无论处于何地的代码工作者能工作于同一个项目,同一个版本的平台.(GitHub is a code hosti ...

  7. ROS探索总结(五)——创建简单的机器人模型smartcar

    前面我们使用的是已有的机器人模型进行仿真,这一节我们将建立一个简单的智能车机器人smartcar,为后面建立复杂机器人打下基础. 一.创建硬件描述包 roscreat-pkg  smartcar_de ...

  8. sequelize 测试

    1.在根目录新建module文件,在文件下新建文件modelhead.js 代码如下: var Sequelize=require("sequelize") var sequeli ...

  9. Blender 软件 四视图布局的创建方法

    Blender 软件 四视图布局的创建方法 我使用的Blender版本:Blender V 2.77 Q: 为什么要创建一个:四视图布局场景? A: 原因1:四视图布局最适合模型建模.原因2:在 Bl ...

  10. 547D Mike and Fish

    传送门 分析 见正睿10.3笔记 代码 #include<iostream> #include<cstdio> #include<cstring> #include ...