1. 程式人生 > >python3入門之賦值語句介紹

python3入門之賦值語句介紹

獲得更多資料歡迎進入我的網站或者 csdn或者部落格園

本節主要介紹賦值語句,以及幾種特殊的賦值。下面附有之前的文章;

簡要介紹下賦值語句

在 python 中賦值語句總是建立物件的引用值,而不是複製物件。因此,python 變數更像是指標,而不是資料儲存區域
Python 沒有「變數」,我們平時所說的變數其實只是「標籤」,是引用。

執行

values=[‘a’,’b’,’c’]
的時候,Python 做的事情是首先建立一個列表物件[‘a’,’b’,’c’],然後給它貼上名為 values 的標籤。如果隨後又執行

values=[‘d’,’e’,’f’]
的話,Python 做的事情是建立另一個列表物件[‘d’,’e’,’f’],然後把剛才那張名為 values 的標籤從前面的[‘a’,’b’,’c’] 物件上撕下來,重新貼到 [‘d’,’e’,’f’] 這個物件上。

直接賦值

語句格式:變數名稱 = 物件

>>> name='peace'
>>> age=22
>>> print(name,age)
peace 22
>>> 

序列解包

序列解包又稱遞迴解包,將多個值的序列解開放到變數的序列中


>>> value=1,2,3
>>> value
(1, 2, 3)
>>> x,y,z=value
>>> x
1
>>> y
2
>>> z
3
>>> 
##交換變數的值可以直接進行 >>> x,y=y,x >>> x 2 >>> y 1 >>>

當函式返回的樹序列時序列解包顯得非常有用;比如如下:

#從字典中彈出任意一對兒鍵值對兒,並賦值給兩個變數
>>> studentId={'peace':'201421014960','nick':'2014'}
>>> key,value=studentId.popitem()
>>> key
'nick'
>>> value
'2014'
>>> 

連續賦值

同時將一個變數賦值給多個變數;

>>> peace=[1,2,3,4]
>>> x=y=z=peace[2]
>>> x
3
>>> y
3
>>> z
3
>>> 

表示式賦值

包括以下表達式賦值:
+=:將右側的值加到變數上的和,然後再賦值給變數;
-=:將變數減去右側的值得到的差,再賦值給變數;
/=:用變數除以右側值得到的商,再賦值給變數;
%=:用變數取右側值的餘數,再賦值給變數;

>>> x=1
>>> x+=2
>>> x
3
>>> x*=2
>>> x
6
>>> x-=3
>>> x
3
>>> x/=3
>>> x
1.0
>>> x*=5
>>> x
5.0
>>> x%=3
>>> x
2.0
>>> 

引用和拷貝

淺複製:

主要的淺複製方法:
(1)沒有限制條件的分片表示式(L[:])能夠複製序列,但此法只能淺層複製。

(2)字典 copy 方法,D.copy() 能夠複製字典,但此法只能淺層複製

對於不可變物件和可變物件來說,淺複製都是複製的引用,只是因為複製不變物件和複製不變物件的引用是等效的(因為物件不可變,當改變時會新建物件重新賦值)。所以看起來淺複製只複製不可變物件(整數,實數,字串等),對於可變物件,淺複製其實是建立了一個對於該物件的引用,也就是說只是給同一個物件貼上了另一個標籤而已。

#直接賦值的淺複製
>>> a=[1,2,3]
>>> b=a
>>> b[1]=1
>>> b
[1, 1, 3]
>>> a
[1, 1, 3]
>>> 
##L[:]
>>> a=[1,[2,3],3]
>>> b=a[:]
>>> a[0]=2
>>> a[1][1]=8
>>> a
[2, [2, 8], 3]
#b的第二個元素跟著改變了
>>> b
[1, [2, 8], 3]
>>> 

深度複製(拷貝)

主要的方法:
有些內建函式,例如 list,能夠生成拷貝 list(L)

copy 標準庫模組能夠生成完整拷貝:deepcopy 本質上是遞迴 copy



>>> import copy
>>> a=[1,[2,3],3]
>>> b=copy.deepcopy(a)
>>> a[0]=2
>>> a[1][1]=8
>>> a
[2, [2, 8], 3]
>>> b
[1, [2, 3], 3]
>>> 

這裡對引用和拷貝只是簡單的介紹,後面講到物件會繼續深究

相關連結: