Python高级语法-深浅拷贝-总结(4.2.1)

目录

  • 1.说明
  • 2.代码
  • 关于作者

@

1.说明

任何可变数据类型都牵扯到深浅拷贝
但是元组,常数等,不可变数据类型,无论浅拷贝,深拷贝都是指向
不管如何嵌套,一旦牵扯到可变数据类型,都会有深浅区别
特别注意,元组切片为浅拷贝,反正可变数据类型没使用deepcopy一律浅拷贝

浅拷贝:
一个变量名等于另一个东西就一定是指向,浅拷贝是拷贝顶层的->copy.copy()
深拷贝:
是全部都拷贝copy.deepcopy

2.代码

# a = 1
# b = a
# print(id(a),id(b))

import copy
a = [11,22]
# c  = copy.deepcopy(a)
# print(id(a),id(c))

def test(nums):
    nums.append(3)

test(a)
print(a)
test(nums=copy.deepcopy(a))
print(a)

关于作者

个人博客网站
个人GitHub地址
个人公众号:

原文地址:https://www.cnblogs.com/simon-idea/p/11402849.html

时间: 2024-08-29 21:09:57

Python高级语法-深浅拷贝-总结(4.2.1)的相关文章

Python中的深浅拷贝详解

要说明Python中的深浅拷贝,可能要涉及到下面的一系列概念需要简单说明下: 变量-引用-对象(可变对象,不可变对象)切片-拷贝-浅拷贝-深拷贝 [变量-对象-引用] 在Python中一切都是对象,比如说: 3, 3.14, 'Hello', [1,2,3,4],{'a':1}...... 甚至连type其本身都是对象,type对象 Python中变量与C/C++/Java中不同,它是指对象的引用 单独赋值: 比如说: >>> a = 3 在运行a=3后,变量a变成了对象3的一个引用.在

Python中的深浅拷贝

Python中的深浅拷贝 前言:我们在了解深浅拷贝之前首先需要明白的一点知识 不可变类型数据:不可变类型即指当改变其内元素时,内存空间将会发生变化,比如常见的不可变类型有:str,boolean, int,tuple. temp = "哈哈哈" ret = temp.replace("哈", "嘿", 2) print(temp) # 哈哈哈 print(ret) # 嘿嘿哈 # 我们可以看到temp的值并没有发生改变,这就是为什么对str数据改

python——赋值与深浅拷贝

初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一--python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来了解一下python内存中变量的存储情况. 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身.  引

python小白-day3 深浅拷贝

一.深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址.下面是字符串例子,数字与其相同: 1 2 3 4 5 6 7 8 9 import copy n1 = 'abc' n2 = n1 n3 = copy.copy(n1) n4 = copy.deepcopy(n1) print(id(n1)) print(id(n2)) print(id(n3)) print(id(n4)) 对于字典.元祖.列表 而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变

python之路-深浅拷贝

深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层.所以对于只有一层的数据集合来说深浅拷贝的意义是一样的,比如字符串,数字,还有仅仅一层的字典.列表.元祖等 对于以下数据深浅拷贝的意义是一样的: name = 'beijing' age = 12 list1 = [1,2,3,4] dic1 = {'name':'beijing','age':20}

python基础(深浅拷贝)

本文主要介绍:深浅拷贝                                                                       注意:在python中有一种自己的优化机制,通常来说字符串在内存中的地址是不相同的,但是在python中,不管是深拷贝还是浅拷贝,只要是通过拷贝的字符串,两个地址是相同的 一.创建 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author by lh 4 5 import

Python基础:深浅拷贝

对于数字.字符串深浅拷贝: import copy num = 0 copy_num = copy.copy(num) print("These are normal copy").center(60,'*') print(num,id(num)) print(copy_num,id(copy_num)) print("These are deep copy").center(60,'*') deep_copy_num = copy.deepcopy(num) pr

python学习之深浅拷贝

深浅拷贝 浅拷贝: 1.针对的是可变数据类型:list.dict.set  ,不可变数据类型int.str.tuple.bool 是没有拷贝一说的,他们都没copy() 方法 2.浅拷贝后是在内存地址中分配了一份新的地址,且浅拷贝只拷贝了第一层,第二层不会拷贝,故第二层如果改变,原数据及浅拷贝后的数据也将改变 3.= 赋值不是浅拷贝,[:] 切片是浅拷贝 a = [11,22,[11,22]] b = a 注:以上称为赋值,只是将a,b都指向了同一个内存地址 a.append(33) print

Python学习-列表深浅拷贝

一.先看一个简单的赋值语句 lst1 = ['France', 'Belgium', 'England'] lst2 = lst1 # lst1.append('Uruguay') lst2.append('Uruguay') print(lst1, lst2) # 猜测一下lst1, lst2的结果:lst2变化是否对lst1产生影响,lst1变化是否对lst2产生影响 输出结果: ['France', 'Belgium', 'England', 'Uruguay'] ['France', '