国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

一篇文章讀懂Python賦值與拷貝

2020-02-22 23:43:51
字體:
來源:轉載
供稿:網友

變量與賦值

在 Python 中,一切皆為對象,對象通過「變量名」引用,「變量名」更確切的叫法是「名字」,好比我們每個人都有自己的名字一樣,咱們通過名字來代指某個人,代碼里面通過名字來指代某個對象。

變量賦值就是給對象綁定一個名字,賦值并不會拷貝對象。好比我們出生的時候父母就要給我們取一個名字一樣,給人取個綽號并不來多出一個人來,只是多一個名字罷了。

兩個對象做比較有兩種方式,分別是:is 與 == ,is比較的是兩個對象是否相同,通過對象的ID值可識別是否為相同對象,==比較的是兩個對象的值是否相等

>>> x1 = [1,2]>>> x2 = [1,2]>>> x1 is x2False>>> id(x1)4338854088>>> id(x2)4338904392>>> x1 == x2True

x1 和 x2 的值雖然相同,但在內存中是兩個獨立的不同的對象,占據不同的內存空間,就好比兩個長得一樣的蘋果擺在桌子上,實則為兩個不同的物體。

>>> x3 = x2>>> x3 is x2True>>> id(x3)4338904392

前面說了,賦值是給對象綁定名字,這里我們只不過是給 x2 對應的那個對象綁定了一個新的名字叫 x3,這就好比桌上放了一個蘋果,開始給它貼了一個 x2 的標簽,后來又給它添了一個 x3 的標簽,本質上還是同一個蘋果,所以,x2 和 x3 所指的其實是同一個對象。

通過x2 修改對象時,x3 也會跟著變化,因為本質上它們是同一個對象,這就好比張三和小張是同一個人時,給張三添衣服其實就是給小張添衣服。

>>> x2.append(3)>>> x2[1, 2, 3]>>> x3[1, 2, 3]

但是,當我給 x2 重新賦值時,相當于 x2 不再引用之前的對象,而引用新對象, x3 依然引用之前的對象。好比桌上一大蘋果開始貼了 x2 和 x3 兩個標簽,給 x2 重新賦值就相當于把 x2 標簽貼到另外一個蘋果,但是 x3 還是貼在老蘋果身上。

>>> x2 = [3, 4]>>> x3[1, 2, 3]

對象拷貝

在業務中有時我們需要復制一個對象,但是又不想對原對象產生副作用,肯定不能通過賦值給一個新變量來解決(因為賦值不是拷貝對象),所以 Python 專門提供了一種拷貝機制,基于原對象快速創建出一個含有相同值的對象。該功能由copy模塊提供。

拷貝又分為淺拷貝和深拷貝。

>>> s = [1,2,3]>>> sc = copy.copy(s) # 淺拷貝>>> sc[1, 2, 3]>>> sdc = copy.deepcopy(s) # 深拷貝>>> sdc[1, 2, 3]            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青海省| 新巴尔虎右旗| 长寿区| 奉贤区| 沁水县| 托里县| 高阳县| 凤山市| 泰安市| 喀喇| 磐安县| 昌都县| 丰县| 惠东县| 裕民县| 泸西县| 南汇区| 铅山县| 宾阳县| 台江县| 罗甸县| 禄丰县| 兴山县| 南阳市| 尉氏县| 调兵山市| 连江县| 东山县| 剑阁县| 鞍山市| 株洲市| 阿合奇县| 德庆县| 冕宁县| 通道| 方城县| 安图县| 满城县| 靖远县| 通渭县| 泉州市|