想要弄清楚内存相关的问题,就要理清楚:变量、内存地址、值之间的关系:
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. redis学习五 集群配置

    redis集群配置 0,整体概述      整体来说就是:      1,安装redis      2,配置多个redis实例      3,安装 ruby和rubygems      4,启动red ...

  2. leetcode458

    原本没有思路,参考了网上的解题思路,自己独立完成了代码. int poorPigs(int buckets, int minutesToDie, int minutesToTest) { ; ; wh ...

  3. 反向索引(Inverted Index)

    转自:http://zhangyu8374.iteye.com/blog/86307 反向索引是一种索引结构,它存储了单词与单词自身在一个或多个文档中所在位置之间的映射.反向索引通常利用关联数组实现. ...

  4. JS获取页面URL信息

    下面我们举例一个URL,然后获得它的各个组成部分: http://i.cnblogs.com/EditPosts.aspx?opt=1 window.location.href (设置或获取整个 UR ...

  5. python之数据库的操作(课前准备)

    数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 上面的就是数据库的定义. 何为数据库,简单的来说,就是我们的大型数据的存放地点. 而我们学习的呢就是数据库的访问层的制作. 何为 ...

  6. MyBatis使用动态代理报 invalid bound statement (not found) 错

    这个问题网上大部分都说xml文件中的路径不对 或者是resources之类的问题,如果那些文章的解决方案解决不了你的问题的话,可以看一下我遇到的这种情况: 前提: mybatis-config.xml ...

  7. HTML->CSS->JS->PHP的顺序及相关网址(转)

    如果你有耐心坚持一年以上的话, 我会推荐HTML->CSS->JS->PHP的顺序来学习. 1. HTML学习:首先学习HTML,HTML作为标记语言是非常容易学的,把w3schoo ...

  8. Spring 第一天课程

    一. 面试题部分 1. 什么是IOC?什么是DI?他们有什么区别? 答案: IOC,即控制反转.是指将原来程序中自己创建实现类对象的控制权反转到IOC容器中. IOC的别名:依赖注入(DI),DI 是 ...

  9. poj3171 Cleaning Shifts

    传送门 题目大意 有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间. 分析为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理.我们考虑以t1 ...

  10. 1.初学c++,比较困惑的问题。

    1.c++是一门实用的语言吗? c++是一个实用的工具,它很有用. 在工业软件世界中,c++被视为坚实和成熟的主流工具.它具有广泛的行业支持和好批. 2.面向对象编程在c++中的作用? 我们要开发一个 ...