龙空技术网

3分钟掌握Python的赋值、浅拷贝和深拷贝的区别

自由坦荡的湖泊AI 182

前言:

今天小伙伴们对“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怎么赋值