想要弄清楚内存相关的问题,就要理清楚:变量、内存地址、值之间的关系:
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. 球的移动(move)

    有n个盒子(1<=N<=1000)围成一个圈,每个盒子有ai个球,所有盒子的球的总数小于等于n.每一次移动,可以把一个球移动到它的一个相邻的盒子内.现在要使得每个盒子的球数<=1,求 ...

  2. 部署和调优 1.3 pureftp部署和优化-2

    登录ftp,用远程的一台机器,执行 lftp 如果没有这个命令,需要安装 yum install -y lftp 登录ftp lftp ftpuser1@192.168.1.117 输入口令,即密码 ...

  3. xftp的简单使用

    1.下载并安装Xftp工具.打开Xftp工具,点击“新建”. 2.在“新建会话属性”中选择“名称”为主机命名,在“主机”栏输入主机IP,“协议”和“端口号”使用sftp和22,在“用户名”和“密码“栏 ...

  4. linux中安装sqlmap

    wget https://codeload.github.com/sqlmapproject/sqlmap/legacy.tar.gz/master //下载sqlmap tar zxvf maste ...

  5. maven 本地jar包依赖生成

    转载自:http://www.cnblogs.com/wuyouwulv/p/maven_configure_oracle_jdbc.html 由于Oracle授权问题,Maven不提供Oracle ...

  6. Cocos2d-js 热更新学习笔记

    转载至: http://blog.csdn.net/pt_xxj/article/details/68927705 为什么还要再写一篇关于cocos2d js热更新的笔记,最单纯的想法就是记录心得,另 ...

  7. html相关标记的含义

    HTML标记含义1.<html>...</html> :html 文档标记2.<head>...</head> :文档头标记3.<title> ...

  8. 课后作业 利用for循环嵌出菱形

    for (int i = 1; i <= 11; i++) // i 的起始值是一 在<=11; 逐个递增 { int a, b, c;// 定义abc三数 for (a = 11; a ...

  9. SQLServer存储引擎——02.内存

    SQLServer存储引擎之内存篇: (1)SQL SERVER 内存结构        SQL SERVER 内存结构简图 SQL SERVER 内存空间主要可分为两部分: (1.1)可执行代码(E ...

  10. Python2闭包问题

    Python2 中的闭包比较怪异,和javascript中的闭包不大一样,这里说明一下. 不少内容引自http://www.cnblogs.com/vamei/archive/2012/12/15/2 ...