# id()函数能够获取变量在内存中的地址标识 num1 = 2; num2 = 2; print(id(num1)) # result:8791124202560 print(id(num2)) # result:8791124202560 str1 = '123' str2 = '123' print(id(str1)) # result:39986040 print(id(str2)) # result:39986040
结论:对于数字和字符串来讲,赋值时若是有相同的值在python管理的内存中,python内部会把这个值的引用(地址)指向被赋值的变量python
1 from copy import * 2 list1 = [1, {'a': 1, 'b': 2}, ('a', 'b', 'c')] 3 list2 = list1 4 #列表 5 print(id(list1)) # result:30433928 6 print(id(list2)) # result:30433928 7 #字典 8 print(id(list1[1])) # result:31017792 9 print(id(list2[1])) # result:31017792 10 #元组 11 print(id(list1[2])) # result:35446576 12 print(id(list1[2])) # result:35446576
结论:对于赋值,列表,字典,元组用的都是同一块地址函数
1 from copy import * 2 str1 = '123' 3 str2 = copy(str1) # 使用copy模块里的copy()函数进行浅拷贝 4 print(id(str1)) # result:31204496 5 print(id(str2)) # result:31204496 6 num1 = 3 7 num2 = copy(num1) 8 print(id(num1)) # rsult:8791078065248 9 print(id(num2)) # rsult:8791078065248
结论:数字和字符串的浅拷贝,与赋值相同,在内存当中用的也是同一个地址
spa
1 from copy import * 2 list1 = [1, {'a': 1, 'b': 2}, ('a', 'b', 'c')] 3 list2 = copy(list1) 4 # 列表 5 print(id(list1)) # result:42354568 6 print(id(list2)) # result:42227400 7 # 字典 8 print(id(list1[1])) # result:30952256 9 print(id(list2[1])) # result:30952256 10 # 元组 11 print(id(list1[2])) # result:41082600 12 print(id(list2[2])) # result:41082600 13 14 tuple1 = (1, {'a': 1, 'b': 2}, ['a', 'b', 'c']) 15 tuple2 = copy(tuple1) 16 # 元组 17 print(id(tuple1)) # result:35668112 18 print(id(tuple2)) # result:35668112 19 # 字典 20 print(id(tuple1[1])) # result:30821256 21 print(id(tuple2[1])) # result:30821256 22 # 列表 23 print(id(tuple1[2])) # result:35862792 24 print(id(tuple2[2])) # result:35862792
结论:对于列表和字典,浅拷贝会拷贝第一层引用(但最外层是元组时,不会拷贝).code
1 from copy import * 2 str1 = '123' 3 str2 = deepcopy(str1) # 使用copy模块里的copy()函数进行浅拷贝 4 print(id(str1)) # result:31269752 5 print(id(str2)) # result:31269752 6 num1 = 3 7 num2 = deepcopy(num1) 8 print(id(num1)) # rsult:8791074002016 9 print(id(num2)) # rsult:8791074002016
结论:不管是赋值或是浅拷贝亦或是深拷贝,字符串和数字都是用同一个地址blog
1 from copy import * 2 list1 = [1, {'a': 1, 'b': 2}, [1, 2, 3], ('a', 'b', 'c')] 3 list2 = deepcopy(list1) 4 # 外层列表 5 print(id(list1)) # result:32134984 6 print(id(list2)) # result:32133768 7 # 字典 8 print(id(list1[1])) # result:4410176 9 print(id(list2[1])) # result:31862720 10 # 列表 11 print(id(list1[2])) # result:32262088 12 print(id(list2[2])) # result:32262408 13 # 元组 14 print(id(list1[3])) # result:32038704 15 print(id(list2[3])) # result:32038704
结论:深拷贝会对列表和字典进行拷贝,但对于元组,深浅拷贝都会失效.内存