亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python中的對(duì)象拷貝示例 python引用傳遞

 更新時(shí)間:2014年01月23日 16:45:17   作者:  
你想復(fù)制一個(gè)對(duì)象?因?yàn)樵赑ython中,無(wú)論你把對(duì)象做為參數(shù)傳遞,做為函數(shù)返回值,都是引用傳遞的

何謂引用傳遞,我們來(lái)看一個(gè)C++交換兩個(gè)數(shù)的函數(shù):

復(fù)制代碼 代碼如下:

void swap(int &a, int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

這個(gè)例子就是一個(gè)引用傳遞的例子!目的是說(shuō)明一下概念:引用傳遞的意思就是說(shuō)你傳遞的是對(duì)象的引用,對(duì)這個(gè)引用的修改也會(huì)導(dǎo)致原有對(duì)象的改變。學(xué)過C/C++的朋友們都知道,在交換2個(gè)數(shù)的時(shí)候,如果自己實(shí)現(xiàn)一個(gè)swap函數(shù),需要傳遞其引用或者指針。

Python直接使用引用傳遞,多方便啊,你還要吐槽什么?你又想過我不想改變?cè)瓕?duì)象的情況嗎?如果有,那么看這里!

假設(shè)我現(xiàn)在有一個(gè)list,叫做l1,我現(xiàn)在需要一份l1的拷貝,如果我直接使用諸如l2 = l1的方式,然后我對(duì)l2進(jìn)行一系列的修改,會(huì)等價(jià)于我對(duì)l1直接做修改,這可不是我想要的!如:

復(fù)制代碼 代碼如下:

l1 = [1, 2]
l2 = l1
l2.append(3)
print l1
print l2
# l1 = [1, 2, 3], l2 = [1, 2, 3]

這就是Python引用傳遞造成的,也就是說(shuō)l1和l2屬于同一list對(duì)象,那么如何才能得到一份不同的對(duì)象呢?這不是so easy嘛,用切片撒,比如:

復(fù)制代碼 代碼如下:

l1 = [1, 2]
l2 = l1[:]
l2.append(3)
# l1 = [1, 2], l2 = [1, 2, 3]

是的,目的達(dá)到了,別介,你確定這樣一定行?讓我們看看一個(gè)更復(fù)雜的情況:

復(fù)制代碼 代碼如下:

l1 = [[1, 2], 3]
l2 = l1[:]
l2.append(4)
# l1 = [[1, 2], 3], l2 = [[1, 2], 3, 4]
l2[0].append(5)
# l1 = [[1, 2, 5], 3], l2 = [[1, 2, 5], 3, 4]

啊哈,貌似出問題了哈,這個(gè)可不是我們需要的!怎么辦呢?好了,進(jìn)入今天的正題,Python中的copy模塊!

復(fù)制代碼 代碼如下:

import copy

如果你希望復(fù)制一個(gè)容器對(duì)象,以及它里面的所有元素(包含元素的子元素),使用copy.deepcopy,這個(gè)方法會(huì)消耗一些時(shí)間和空間,不過,如果你需要完全復(fù)制,這是唯一的方法。上面我們提到的切片的方式,等價(jià)于copy模塊中的copy函數(shù)。

上面拷貝的操作變得so easy了:

復(fù)制代碼 代碼如下:

l1 = [[1, 2], 3]
l2 = copy.copy(l1)
l3 = copy.deepcopy(l1)
l2.append(4)
l2[0].append(5)
l3[0].append(6)
# l1 = [[1, 2, 5], 3], l2 = [[1, 2, 5], 3, 4], l3 = [[1, 2, 6], 3]

相關(guān)說(shuō)明:

復(fù)制代碼 代碼如下:

copy(x)
    Shallow copy operation on arbitrary Python objects.
    See the module's __doc__ string for more info.
deepcopy(x, memo=None, _nil=[])
    Deep copy operation on arbitrary Python objects.
    See the module's __doc__ string for more info.

相關(guān)文章

  • Python之np.where()如何替換缺失值

    Python之np.where()如何替換缺失值

    這篇文章主要介紹了Python中的np.where()如何替換缺失值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python常用的模塊和簡(jiǎn)單用法

    Python常用的模塊和簡(jiǎn)單用法

    這篇文章主要給大家介紹Python#常用的模塊和簡(jiǎn)單用法,以random 隨機(jī)模塊展開話題,感興趣的小伙伴可以參考一下
    2021-10-10
  • django 類視圖的使用方法詳解

    django 類視圖的使用方法詳解

    這篇文章主要介紹了django 類視圖的使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 使用pyqt5搭建yolo3目標(biāo)識(shí)別界面的方法

    使用pyqt5搭建yolo3目標(biāo)識(shí)別界面的方法

    這篇文章主要介紹了使用pyqt5搭建yolo3目標(biāo)識(shí)別界面的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Pycharm基本操作及調(diào)試代碼

    Pycharm基本操作及調(diào)試代碼

    最近天氣狂熱暴躁,很難靜下心來(lái)學(xué)習(xí)啦,于是給大家整理一些python開發(fā)工具pycharm基本操作及調(diào)試代碼吧,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞

    Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞

    這篇文章主要介紹了Django實(shí)現(xiàn)whoosh搜索引擎使用jieba分詞,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    這篇文章主要介紹了在windows下安裝Pycham2020軟件方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python實(shí)現(xiàn)基本Socket服務(wù)端與客戶端通信的完整代碼

    Python實(shí)現(xiàn)基本Socket服務(wù)端與客戶端通信的完整代碼

    這篇文章主要介紹了Python實(shí)現(xiàn)基本Socket服務(wù)端與客戶端通信,分步詳解與完整代碼都有,按需所求即可,對(duì)Python Socket服務(wù)端與客戶端通信相關(guān)知識(shí)感興趣的朋友一起看看吧
    2023-06-06
  • Python 2種方法求某個(gè)范圍內(nèi)的所有素?cái)?shù)(質(zhì)數(shù))

    Python 2種方法求某個(gè)范圍內(nèi)的所有素?cái)?shù)(質(zhì)數(shù))

    這篇文章主要介紹了Python 2種方法求某個(gè)范圍內(nèi)的所有素?cái)?shù)(質(zhì)數(shù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 利用Python編寫一個(gè)鬧鐘,治好你的拖延癥

    利用Python編寫一個(gè)鬧鐘,治好你的拖延癥

    起床真是令人困擾的事情,有的人根本不用定鬧鐘,但有的人提前半個(gè)小時(shí)鬧鐘都叫不醒。本文將分享利用Python編寫的鬧鐘腳本,希望能治好你的拖延癥
    2022-02-02

最新評(píng)論