### 獲得更多資料歡迎進入[我的網站](http://rlovep.com/)或者 [csdn](http://blog.csdn.net/peace1213)或者[博客園](http://www.cnblogs.com/onepeace/)
> 本節主要介紹賦值語句,以及幾種特殊的賦值。下面附有之前的文章;
# 簡要介紹下賦值語句
在 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]
>>>
~~~
這里對引用和拷貝只是簡單的介紹,后面講到對象會繼續深究
#### 相關鏈接:
[python3入門之類](http://rlovep.com/2015/09/23/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E7%B1%BB/)
[python3入門之函數](http://rlovep.com/2015/09/06/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%87%BD%E6%95%B0/)
[python3入門之循環](http://rlovep.com/2015/09/06/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%BE%AA%E7%8E%AF/)
[python3之if語句](http://rlovep.com/2015/08/05/python3%E4%B9%8Bif%E8%AF%AD%E5%8F%A5/)
[python3入門之賦值語句介紹](http://rlovep.com/2015/08/03/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E8%B5%8B%E5%80%BC%E8%AF%AD%E5%8F%A5%E4%BB%8B%E7%BB%8D/)
[python3入門之print,import,input介紹](http://rlovep.com/2015/08/03/python3%E5%85%A5%E9%97%A8%E4%B9%8Bprint%EF%BC%8Cimport%EF%BC%8Cinput%E4%BB%8B%E7%BB%8D/)
[python3入門之set](http://www.cnblogs.com/onepeace/p/4791578.html)
[python3入門之字典](http://rlovep.com/2015/07/29/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E5%85%B8/)
[python3入門之字符串](http://rlovep.com/2015/07/28/python%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E7%AC%A6%E4%B8%B2/)
[python3入門之列表和元組](http://rlovep.com/2015/07/14/python%E5%85%A5%E9%97%A8%E4%B9%8B%E5%88%97%E8%A1%A8%E5%92%8C%E5%85%83%E7%BB%84/)
[python3入門之軟件安裝](http://rlovep.com/2015/07/14/python%E5%85%A5%E9%97%A8%E4%B9%8B%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/)
[python3爬蟲之入門和正則表達式](http://rlovep.com/2015/09/23/python3%E7%88%AC%E8%99%AB%E4%B9%8B%E5%85%A5%E9%97%A8%E5%92%8C%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/)