python 64式 第10式 深淺拷貝

2021-08-29 16:31:11 字數 926 閱讀 8040

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import copy

'''關鍵:

1 深拷貝:拷貝了物件所有元素,包含巢狀元素。是與原來物件無關的全新物件。無關性。

2 淺拷貝: 建立新物件,但新物件中各個元素是原物件對應各個元素的引用。

3 舉例如下:

a = [1,[2,3]]

c = copy.copy(a)

那麼a與c雖然是兩個不同物件(id(a) != id(c)),但是a與c中各個元素是相同的(例如id(a[0]) = id(c[0]) , id[a[1]]=id(c[1]))

那麼就是說:

總結:深淺拷貝都是建立新的物件。但深拷貝包含了巢狀拷貝,拷貝後的物件與原物件無關。淺拷貝中的每個元素和原物件每個元素相同,如果對元素操作,會使得淺拷貝對應元素發生變化。

參考:[1]

[2]

[3]

'''def usecopy():

a = [1, [2,3]]

b = copy.copy(a)

c = copy.deepcopy(a)

assert (id(a) != id(b))

for i, value in enumerate(a):

assert (id(a[i] == id(b[i])))

assert b == [1, [2,3]]

assert c == [1, [2,3]]

assert b == [1, [2,3,6]]

assert c == [1, [2,3]]

def process():

usecopy()

if __name__ == "__main__":

process()

python 64式 第13式 執行緒

usr bin env python coding utf 8 import time import threading 關鍵 1 併發和並行 併發 交替處理多個任務的能力 關鍵在併發交替 並行 同時處理多個任務的能力 關鍵在並行同時 2 多程序與多執行緒 多程序可以充分使用多個cpu 多執行緒不能...

python 64式 第6式 定時器

usr bin env python coding utf 8 import logging import sys from datetime import datetime from oslo config import cfg from oslo log import log from oslo...

python 64式 第49式 dict原始碼分析

目標 弄清楚python中dict的實現原理 1.1 原理 python的字典實際是雜湊表,通過雜湊函式將key對映到表中的位置來 儲存value。存在不同物件經過雜湊函式得到的雜湊值可能相同,此時 採用開放定址法來解決衝突。開放定址法通過二次探測函式f尋找下乙個候選位置,若位置可用,則將資料插入。...