1、python中的可变对象与不可变对象

(1) 可变对象:dict,list

def dict_test():a = {}b = aprint(id(a))                     # 140367329543360                    a['a'] = 'hhhh'print('id a:' + str(id(a)))      # id a:140367329543360print('a:' + str(a))             # a:{'a': 'hhhh'}print('id b:' + str(id(b)))      # id b:140367329543360print('b:' + str(b))             # b:{'a': 'hhhh'}if __name__ == '__main__':dict_test()

内存变化如下:

(2) 不可变对象:int,string,float,tuple

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def int_test(): i = 77j = 77print(id(77))                    #140396579590760print('i id:' + str(id(i)))      #i id:140396579590760print('j id:' + str(id(j)))      #j id:140396579590760print i is j                     #Truej = j + 1print('new i id:' + str(id(i)))  #new i id:140396579590760print('new j id:' + str(id(j)))  #new j id:140396579590736print i is j                     #Falseif __name__ == '__main__':int_test()

内存分配如下:

2、赋值、浅拷贝与深拷贝:

(1) b = a: 赋值引用,a 和 b 都指向同一个对象。

(2) b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

(3) b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

3、更多实例:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import copy
a = [1, 2, 3, 4, ['a', 'b']]       #原始对象b = a                              #赋值,传对象的引用
c = copy.copy(a)                   #对象拷贝,浅拷贝
d = copy.deepcopy(a)               #对象拷贝,深拷贝a.append(5)                        #修改对象a
a[4].append('c')                   #修改对象a中的['a', 'b']数组对象print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )

运行结果如下:

('a = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5])
('b = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5])
('c = ', [1, 2, 3, 4, ['a', 'b', 'c']])
('d = ', [1, 2, 3, 4, ['a', 'b']])

4、按照具体需求选择合适的赋值或者拷贝形式:

建议:在内存足够的情况下,选择深拷贝,这样逻辑处理独立,不会产生上下文的影响,不容易发生难以解决的bug。

Python基础教程:赋值、深拷贝与浅拷贝(内存地址)相关推荐

  1. 【Python】直接赋值,深拷贝和浅拷贝

    直接赋值: 对象的引用,也就是给对象起别名 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加 ...

  2. Python基础教程,Python神仙级入门教程(非常详细)

    Python 是一门开源免费.通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」. Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发.PC ...

  3. 《Python基础教程》学习笔记——条件、循环及其他语句

    Python基础教程--条件.循环及其他语句 条件.循环及其他语句 再谈 print 和 import 打印多个参数 导入时重命名 赋值魔法 序列解包 链式赋值 增强赋值 代码块:缩进的乐趣 条件和条 ...

  4. c++如何让字符串重复输出_如何入门Python之自学python基础教程送你参考

    随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 什么是算法 ...

  5. Python基础教程-菜鸟教程学习笔记1

    Python基础教程-菜鸟教程学习笔记1 文章目录 Python基础教程-菜鸟教程学习笔记1 前言 Python 简介 1. 第一个Python程序 2. Python 中文编码 3. 基本语法 1) ...

  6. Python基础教程(第3版)》笔记:第6章抽象

    Python基础教程(第3版)>笔记:第6章抽象 **斐波那契数列:**每个数都是前两个数的和. fibs = [0,1] for i in range(8):fibs.append(fibs[ ...

  7. python基础教程博客_python基础教程(一)

    之所以选择py交易有以下几点:1.python是胶水语言(跨平台),2.python无所不能(除了底层),3.python编写方便(notepad++等文本编辑器就能搞事情),4.渗透方面很多脚本都是 ...

  8. python基础教程第二版答案-《Python基础教程》(第2版修订版)中要注意的地方...

    想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...

  9. python基础教程第二版和第三版有什么区别-《Python基础教程》(第2版修订版)中要注意的地方...

    想必现在大家学习Python都会用3.0及以上的版本了,虽然2.X的版本依然很多,但是这两年随着部分开源项目不再支持2.X版本,3.X已经成为趋势. 正是在这样的大背景下,我最近用这本<Pyth ...

  10. python基础教程攻略-python基础教程(一)

    之所以选择py交易有以下几点:1.python是胶水语言(跨平台),2.python无所不能(除了底层),3.python编写方便(notepad++等文本编辑器就能搞事情),4.渗透方面很多脚本都是 ...

最新文章

  1. 腾讯杰出科学家写给2029的信:计算机视觉AI技术的爆点在哪里?
  2. Android中ActivityLifecycleCallbacks的使用
  3. 解决 IE8下 vs2008 无法调试
  4. python Exception(异常处理)
  5. 7z增量更新参数使用
  6. php文章列表源码,抓取文章列表
  7. 2022年上半年网络工程师下午真题及答案
  8. windows 安装 docker destop
  9. cmi码型变换matlab程序,DDC 通信原理仿真 码型反变换的仿真实现 Ⅰ、基本任务:由抽样 联合开发网 - pudn.com...
  10. WIN7搭建web服务器的步骤
  11. java 获取今天是星期几
  12. 比特大陆的“新筹码”:IPO失效后,押注算力芯片
  13. Joel Spolsky在耶鲁的演讲无责任导读
  14. 中国计算机学会高级会员资格,高级会员
  15. vue中获取/操作组件中的dom元素
  16. 善用SQL Server 2008 SMSS的服务器组功能
  17. ST-Link SWD接口接线
  18. GBase 8s灾备集群HAC (三) 主备配置
  19. 计算机组成原理复习总结(七)外围设备
  20. 信号 信号的线性放大

热门文章

  1. 正则表达式中的小括号用法
  2. Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持
  3. nginx配置文件防盗链
  4. linux shell 脚本 延时,linux下定时任务和延迟任务
  5. from html参数传到另外php文件中_在 PHP 中格式化并高亮 SQL 语句
  6. iphone同步助手_教你如何用爱思助手给你的苹果手机设置自己喜欢的铃声
  7. ABAP中操作回车、换行、回车加换行、的方案
  8. SAP HR信息类型
  9. Funtion:POPUP_TO_DECIDE_LIST
  10. 干货:如何进行用户流失分析与预警?