Python学习之路7——深浅拷贝剖析

 一、对象赋值

  创建列表变量Alex,变量包含子列表,通过变量Alex给变量lzl赋值。

  然后对变量Alex的元素进行修改,此时lzl会有什么变化呢?让我们通过内存地址分析两者的变化。

 1 #   对象赋值
 2 import copy                     #import调用copy模块
 3  
 4 Alex = ["Alex", 28, ["Python", "C#", "JavaScript"]]
 5 lzl = Alex                       #直接赋值
 6  
 7 #   修改前打印
 8 print(id(Alex))              #打印列表在内存中的地址
 9 print(Alex)                        #打印列表内容
10 print([id(adr) for adr in Alex])   #打印列表中每个元素(包括子列表)在内存中的地址
11 # 输出:  7316664
12 #        ['Alex', 28, ['Python', 'C#', 'JavaScript']]
13 #        [2775776, 1398430400, 7318024]
14 print(id(lzl))
15 print(lzl)
16 print([id(adr) for adr in lzl])
17 # 输出:  7316664
18 #        ['Alex', 28, ['Python', 'C#', 'JavaScript']]
19 #        [2775776, 1398430400, 7318024]
20  
21 #    对变量进行修改
22 Alex[0]='Mr.Wu'
23 Alex[2].append('CSS')
24 print(id(Alex))
25 print(Alex)
26 print([id(adr) for adr in Alex])
27 # 输出:  7316664
28 #        ['Mr.Wu', 28, ['Python', 'C#', 'JavaScript', 'CSS']]
29 #        [5170528, 1398430400, 7318024]
30 print(id(lzl))
31 print(lzl)
32 print([id(adr) for adr in lzl])
33 # 输出:  7316664
34 #        ['Mr.Wu', 28, ['Python', 'C#', 'JavaScript', 'CSS']]
35 #        [5170528, 1398430400, 7318024]

  

猜你喜欢

转载自www.cnblogs.com/visonwong/p/8978408.html