99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

python賦值是拷貝還是引用-創新互聯

創新互聯www.cdcxhl.cn八線動態BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

創新互聯2013年開創至今,先為鳳岡等服務建站,鳳岡等地企業,進行企業商務咨詢服務。為鳳岡企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

本篇文章給大家分享的是有關python賦值是拷貝還是引用,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

變量。對象和引用

python中的這些概念和C++中的有很大的不同。有些概念需要我們理解:

1、python中的變量沒有類型信息,類型的概念存在于對象中而不是變量中。變量是通用的,它只是引用了一個特定的對象。這和C++中的void指針有點相似的味道。

2、類型屬于對象,并且對象中包含了一個引用計數器,用于記錄當前有多少個變量在引用這個對象。一旦引用計數器為0,那么該對象就會被系統自動回收(這里有例外,python中緩存了一些小的常用的對象)。

3、對象有可變對象和不可變對象之分。可變對象可以被修改,有列表list、字典dict。不可變對象無法修改,有數字、字符串str,元組tuple。

#不可變對象的例子
name="bill"
name+="Bob"

第一句創建一個字符串對象,并讓變量name引用該對象。按照C++中的理解,第二句試圖修改name這個字符串。但是在python中,其實新建了一個值為”billBob”的字符串對象,并讓name引用該對象。原來的值為”bill”的字符串對象引用計數變為0,被垃圾回收系統回收。這里的可變與不可變指的是頂層對象不可變

list1=[1,2,3,4]
tuple1=(1,list1)

上面的例子中,雖然tuple1是一個元組對象(不可變),但是tuple1[1]是一個list對象的引用,這個對象是可變的。
4、C++中使用=默認創建對象,而python中使用=默認創建引用!

numList=[1,2,3,4]
#numList2和numList引用同一個列表對象
#修改這個列表對象對這兩個變量都有影響
numList2=numList

再次強調!賦值操作總是儲存對象的引用!!!這一點和C++中完全不同。

list1=[1,2,3,4]
list2=['hello',list1]
dict1={'list1':list1}

像上面這種情況,list1、list2[1]和dict1[‘list1’]都是同一個list對象的引用,并且由于list對象是可變對象,通過上面三個變量中的任意一個變量修改該list對象都會影響到其余的變量。

如何我們確實想要復制對象而不是儲存引用,有以下幾種辦法:1、使用切片表達式;2、使用對象的copy方法(list\dict);3、通過顯示地構造新的對象,例如 list(iterable);4、copy標準庫中的copy()或deepcopy();

注意:只有deepcopy是深拷貝,其余沒有顯示說明的全都是淺拷貝!

以上就是python賦值是拷貝還是引用,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創新互聯-成都網站建設公司行業資訊頻道。

文章題目:python賦值是拷貝還是引用-創新互聯
標題URL:http://www.yijiale78.com/article2/cdisoc.html

成都網站建設公司_創新互聯,為您提供虛擬主機全網營銷推廣定制開發網站收錄網站設計公司網站排名

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設