|
Posted on 2011-08-31 21:51 RTY 閱讀(620) 評論(0) 編輯 收藏 引用 所屬分類: Python
第一次接觸深拷貝和淺拷貝是在c++語言中,python中,也存在著深拷貝和淺拷貝。 淺拷貝,就是給你一個引用,當源數據改變的時候,你以前獲取的引用所指向的數據也會跟著變化;深拷貝,也是給你一個引用,不同的是它拷貝了份資源,給你的引用指向這份拷貝的資源,與源數據無任何聯系。 以代碼說明一切: - >>> ls = [2,7, 'ac', ['2a', 45,10], {'a' : 'a1', 'b':123, 'z': 4, 'r' : 33}, 0]
- >>> ls2 = ls
- >>> ls3 = ls[:]
- >>> import copy
- >>> ls4 = copy.deepcopy(ls)
- >>> ls
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls2
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls3
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls4
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> ls.append(2008)
- >>> print ls
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0, 2008]
- >>> print ls2
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0, 2008]
- >>> print ls3
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
- >>> print ls4
- [2, 7, 'ac', ['2a', 45, 10], {'a': 'a1', 'r': 33, 'b': 123, 'z': 4}, 0]
第1行,初始化一個list 第2—5行,淺拷貝與深拷貝 第6—13行,源數據發生變化前,打印出源數據以及淺拷貝和深拷貝的數據 第14行,源數據增加一個新數據 第15—22,打印出淺拷貝與深拷貝數據 看到結果,就明白淺拷貝與深拷貝了
|