前言:
目前你们对“python 深复制浅复制和赋值”可能比较看重,朋友们都需要了解一些“python 深复制浅复制和赋值”的相关知识。那么小编在网摘上搜集了一些关于“python 深复制浅复制和赋值””的相关文章,希望咱们能喜欢,我们一起来了解一下吧!Python是一种动态类型的编程语言,它可以在运行时创建和修改对象。对象是由变量和数据结构组成的,变量是对象的引用,数据结构是对象的内容。
赋值、浅拷贝和深拷贝是三种不同的对象操作方式,它们对对象的引用和内容有不同的影响。
赋值:简单地拷贝对象的引用,两个对象的id相同。赋值后,原来的对象变成了一个新的对象,但它们指向同一个内存地址。如果原来的对象中有可变类型(如列表、字典等),那么修改其中一个子元素会影响另一个子元素。浅拷贝:创建一个新的组合对象,这个新对象与原来的对象共享内存中的子对象。浅拷贝后,原来的对象仍然指向同一个内存地址,但它们指向不同的新内存地址。如果原来的对象中有可变类型(如列表、字典等),那么修改其中一个子元素不会影响另一个子元素。深拷贝:创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原来的对象没有任何关联。深拷贝后,原来的对象变成了两个个独立的新内存地址,它们指向不同但相同内容。
下面是一些例子来说明这三种操作方式:
# 创建一个包含字符串、列表和字典三种类型数据结构a = {"name": "Alice", "age": 18, "hobbies": ["reading", "writing", "coding"]}print(a) # {'name': 'Alice', 'age': 18, 'hobbies': ['reading', 'writing', 'coding']}# 赋值b = aprint(b) # {'name': 'Alice', 'age': 18, 'hobbies': ['reading', 'writing', 'coding']}print(id(a)) # 140735867055312print(id(b)) # 140735867055312# 修改a中name属性a["name"] = "Bob"print(a) # {'name': 'Bob', 'age': 18, 'hobbies': ['reading', 'writing', 'coding']}print(b) # {'name': 'Bob', 'age': 18, 'hobbies': ['reading', 'writing', 'coding']}
# 创建一个包含字符串、列表和字典三种类型数据结构a = {"name": "Alice", "age": 18, "hobbies": ["reading", "writing", "coding"]}print(a) # {'name': 'Alice', 'age': 18, 'hobbies': ['reading', 'writing', 'coding']}# 浅拷贝b = a.copy()print(b) # {'name': 'Alice', 'age': 18, 'hobbies': ['reading', 'writing','coding']}print(id(a)) # 140735867055312print(id(b)) # 140735867055312# 修改a中age属性a["age"] = 19print(a) # {'name': 'Alice','age':19,'hobbies':['reading','writing','coding']}print(b) # {'name':'Alice','age':19,'hobbies':['reading','writing','coding']}
# 创建一个包含字符串、列表和字典三种类型数据结构a = {"name": "Alice","age":18,"hobbies":["reading","writing","coding"]}print(a) # {'name':'Alice','age':18,'hobbies':['reading','writing','coding']}# 深拷贝import copyb = copy.deepcopy(a)print(b) # {'name':'Alice','age':18,'hobbies':['reading','writing','coding']}print(id(a)) # 140735867055312print(id
标签: #python 深复制浅复制和赋值