一、对象赋值
创建列表变量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]