厚薄复本对相同的正则表达式,其整体表现也就不那样,主要就差别能分成气门正则表达式和不容变正则表达式
对不容变正则表达式而言
表达式、浅复本、深复本都无象征意义,即使她们的值总有一天都对准同一类别门牌号
对不容变正则表达式而言,如果值完全相同,对准的物理门牌号都是两个
# 引入copy组件 >>> import copy # 表述两个表达式var1 >>> var1 = 123 # 输入var1的物理门牌号 >>> id(var1) 1347747440 >>> var2 = var1 # var2的物理门牌号和var1完全相同 >>> id(var2) 1347747440 # 浅复本 >>> var3 = copy.copy(var1) # var3的物理门牌号和var1完全相同 >>> id(var3) 1347747440 # 深复本 >>> var4 = copy.deepcopy(var1) # var4的物理门牌号和var1完全相同 >>> id(var4) 1347747440>>> tup1 = (1,2,3) >>> id(tup1) 140653000336480 >>> tup2 = tup1 >>> id(tup2) 140653000336480 >>> from copy import copy, deepcopy>>> tup3 = copy(tup1) >>> id(tup3) 140653000336480 >>> tup4 = deepcopy(tup1) >>> id(tup4) 140653000336480 >>>对气门正则表达式而言
对字典、元祖、列表 而言,进行表达式、浅复本和深复本时,其物理门牌号的变化是相同的。
表达式
表达式,只是创建两个表达式,该表达式对准原来物理门牌号,如:
>>> var1 = {“k1”: “1”, “k2”: 2, “k3”: [“abc”, 456]} >>> var2 = var1 >>> id(var1) 1937003361288 >>> id(var2)1937003361288这就意味的,如果改变表达式的值,两个表达式都会相互受影响
l1 = [1, 2, 3] l2 = l1 l2[1] = 1000 print(l2 is l1) # True print(l1) # [1, 1000, 3] print(l2) # [1, 1000, 3]浅复本
浅复本,在内存中只额外创建第一层数据,
如何识别层数,就是每嵌套一层就加1
# 引入复本组件 >>> import copy >>> var1 = {“k1”: “1”, “k2”: 2, “k3”: [“abc”, 456]} # 使用浅复本的方式 >>> var2 = copy.copy(var1) # 两个变量的物理门牌号是不那样的 >>> id(var1) 2084726354952 >>> id(var2) 2084730248008 # 但是她们的元素物理门牌号是那样的 >>> id(var1[“k1”]) 2084726207464 >>> id(var2[“k1”]) 2084726207464 # 改变var1第一层的数据 var2 不会跟的变换 >>> var1[“11”] = 123 >>> var2 {k1: 1, k2: 2, k3: [abc, 456]} >>> var1[“k1”] = 234 >>> var2 {k1: 1, k2: 2, k3: [abc, 456]} >>> var2[“k1”] 1 # 改变var1大于第一层的数据,var2 也会跟的改变 >>> var1[“k3”].append(789) >>> var2 {k1: 1, k2: 2, k3: [abc, 456, 789]} >>> var2[“k3”] [abc, 456, 789] >>>深复本
深复本,在内存中将所有的数据重新创建一份
# 引入复本组件 >>> import copy >>> var1 = {“k1”: “1”, “k2”: 2,“k3”: [“abc”, 456]} # 使用深复本的方式把var1的内容复本给var2 >>> var2 = copy.deepcopy(var1) # var1和var2的物理门牌号是不完全相同的 >>> id(var1)1706383946760 >>> id(var2) 1706389852744 # var1和var2的元素”k3″物理门牌号是不完全相同的 >>> id(var1[“k3”]) 1706389853576 >>> id(var2[“k3”]) 1706389740744 # var1和var2的”k3″元素的物理门牌号是完全相同的 >>> id(var1[“k3”][1]) 1706383265744 >>> id(var2[“k3”][1]) 1706383265744