域名买来可以做网站吗,沈阳网站建设联系方式,每天看七个广告赚40元的app,做网站外包是什么意思目录
一.Python 浅拷贝和深拷贝前言二.Python 普通的变量赋值三.Python 浅拷贝和深拷贝 1.Python 浅拷贝 copy2.Python 深拷贝 deepcopy3.Python 浅拷贝和深拷贝区别 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 Python 基础入门 一.Python 浅拷贝和深…目录
一.Python 浅拷贝和深拷贝前言二.Python 普通的变量赋值三.Python 浅拷贝和深拷贝 1.Python 浅拷贝 copy2.Python 深拷贝 deepcopy3.Python 浅拷贝和深拷贝区别 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 Python 基础入门 一.Python 浅拷贝和深拷贝前言
何谓浅拷贝/深拷贝说得直白一点其实就是数据拷贝两者到底有什么区别呢听着就挺迷糊的Python 开发项目的时候说不定你就能碰上这样的坑 二.Python 普通的变量赋值
我们平常使用的变量赋值就是浅拷贝即两个变量共享同一个内存块相同的内存地址一旦值发生改变另外一个变量的值也会跟随着一起变化演示代码如下
# !usr/bin/env python
# -*- coding:utf-8 _*-Author:猿说编程
Blog(个人博客地址): www.codersrc.com
File:Python 浅拷贝和深拷贝.py
Time:2021/3/29 07:37
Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累list1 [1,2,3,4,5]
# 普遍的变量赋值
list2 list1
print(id(list1))
print(id(list2))# 修改列表list2的数据
list2.append(123)
print(list1)
print(list2)
输出结果:
2251297055368
2251297055368
[1, 2, 3, 4, 5, 123]
[1, 2, 3, 4, 5, 123]注意常规的变量赋值共享一个内存块内存地址相同一旦值发生改变共享同一个内存地址的所有变量值都会发生改变可以直接通过内置函数 id 对比下内存地址即可 三.Python 浅拷贝和深拷贝
在 Python 开发过程中有些时候对于上面的情况并不是我们想要的我们更加希望对赋值后的变量做修改并不影响原始变量的值如何实现呢这里就需要介绍一下 copy 模块 copy.copy – 浅拷贝重新分配内存只拷贝父对象不会拷贝对象的内部的子对象 copy.deepcopy – 深拷贝重新分配内存拷贝对象及其所有子对象 1.Python 浅拷贝 copy
# !usr/bin/env python
# -*- coding:utf-8 _*-Author:猿说编程
Blog(个人博客地址): www.codersrc.com
File:Python 浅拷贝和深拷贝.py
Time:2021/3/29 07:37
Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累import copy
spam [A, B, C, D]
# 使用浅拷贝
cheese copy.copy(spam)
cheese[1] 42
print(id(spam),spam)
print(id(cheese),cheese)
输出结果
57205555 [A, B, C, D]
57208888 [A, 42, C, D]2.Python 深拷贝 deepcopy
# !usr/bin/env python
# -*- coding:utf-8 _*-Author:猿说编程
Blog(个人博客地址): www.codersrc.com
File:Python 浅拷贝和深拷贝.py
Time:2021/3/29 07:37
Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累import copy
spam [A, B, C, D]
# 使用深拷贝
cheese copy.deepcopy(spam)
cheese[1] 42
print(id(spam),spam)
print(id(cheese),cheese)
输出结果:
57205555 [A, B, C, D]
57208888 [A, 42, C, D]3.Python 浅拷贝和深拷贝区别
** 对于常规的字典 dict 或者列表 list 使用 copy 模块的深拷贝或者浅拷贝两者并没有区别**如果字典或者列表中还有包含有子类的话使用 copy 模块的深拷贝和浅拷贝的话结果就大不相同了 copy.copy — 重新分配内存只拷贝父对象不会拷贝对象内部的子对象 copy.deepcopy — 重新分配内存拷贝对象及其所有子对象 示例代码如下
# !usr/bin/env python
# -*- coding:utf-8 _*-Author:猿说编程
Blog(个人博客地址): www.codersrc.com
File:Python 浅拷贝和深拷贝.py
Time:2021/3/29 07:37
Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累import copyprint(使用浅拷贝)
spam [[A,E], B, C, D]
# 使用浅拷贝
cheese copy.copy(spam)
cheese[0][0] 42
print(id(spam),spam)
print(id(cheese),cheese)
print(****20)print(使用深拷贝)
spam [[A,E], B, C, D]
# 使用深拷贝
cheese copy.deepcopy(spam)
cheese[0][0] 42
print(id(spam),spam)
print(id(cheese),cheese)
输出结果
使用浅拷贝
2179653046408 [[42, E], B, C, D]
2179653046920 [[42, E], B, C, D]
************************************************************
使用深拷贝
2179653086728 [[A, E], B, C, D]
2179653046408 [[42, E], B, C, D]由此可见
** 如果列表或者字典没有包含子列表或者子字典的话使用深拷贝或者浅拷贝效果都有一样**
** 如果列表或者字典中存在子类的时候只有深拷贝才会为所有的子类也重新分配内存而浅拷贝只负责父对象不考虑子对象**
四.猜你喜欢
Python 配置环境Python 变量Python 运算符Python 条件判断 if/elsePython while 循环Python breakPython continuePython for 循环Python 字符串Python 列表 listPython 元组 tuplePython 字典 dictPython 条件推导式Python 列表推导式Python 字典推导式
未经允许不得转载猿说编程 » Python 浅拷贝和深拷贝