Python基础教程:赋值、深拷贝与浅拷贝(内存地址)
生活随笔
收集整理的這篇文章主要介紹了
Python基础教程:赋值、深拷贝与浅拷贝(内存地址)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、python中的可變對象與不可變對象
(1) 可變對象:dict,list
def dict_test():a = {}b = aprint(id(a)) # 140367329543360 a['a'] = 'hhhh'print('id a:' + str(id(a))) # id a:140367329543360print('a:' + str(a)) # a:{'a': 'hhhh'}print('id b:' + str(id(b))) # id b:140367329543360print('b:' + str(b)) # b:{'a': 'hhhh'}if __name__ == '__main__':dict_test()內存變化如下:
(2) 不可變對象:int,string,float,tuple
內存分配如下:
2、賦值、淺拷貝與深拷貝:
(1) b = a: 賦值引用,a 和 b 都指向同一個對象。
(2) b = a.copy(): 淺拷貝, a 和 b 是一個獨立的對象,但他們的子對象還是指向統一對象(是引用)。
(3) b = copy.deepcopy(a): 深度拷貝, a 和 b 完全拷貝了父對象及其子對象,兩者是完全獨立的。
3、更多實例:
運行結果如下:
('a = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5]) ('b = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5]) ('c = ', [1, 2, 3, 4, ['a', 'b', 'c']]) ('d = ', [1, 2, 3, 4, ['a', 'b']])4、按照具體需求選擇合適的賦值或者拷貝形式:
建議:在內存足夠的情況下,選擇深拷貝,這樣邏輯處理獨立,不會產生上下文的影響,不容易發生難以解決的bug。
總結
以上是生活随笔為你收集整理的Python基础教程:赋值、深拷贝与浅拷贝(内存地址)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在python中构造时间戳参数
- 下一篇: Python apply函数