Python中賦值的含義及說(shuō)明
Python中賦值的含義
在C++中,變量就是對(duì)象本身,對(duì)變量賦值就改變了它代表的對(duì)象。
而在Python中,賦值的含義卻是關(guān)聯(lián)變量名字和實(shí)際對(duì)象,即變量指向了實(shí)際對(duì)象,當(dāng)對(duì)變量再次賦值時(shí),變量原來(lái)指向的對(duì)象并不會(huì)改變(其實(shí)對(duì)象的reference count會(huì)減1),而是變量指向了新的對(duì)象而已。
所以這還導(dǎo)致了一個(gè)后果,當(dāng)多個(gè)變量指向同一個(gè)對(duì)象時(shí),那么用其中一個(gè)變量修改對(duì)象后,其它指向同一對(duì)象的變量也“被改變”了。
下面的代碼清楚地顯示了這一點(diǎn):
>>> a = [0, 1, 2, 3] >>> b = a >>> a [0, 1, 2, 3] >>> b [0, 1, 2, 3] >>> a[0] = 99 >>> a [99, 1, 2, 3] >>> b [99, 1, 2, 3] >>> a = [5, 6, 7, 8] >>> a [5, 6, 7, 8] >>> b [99, 1, 2, 3]
Python賦值語(yǔ)句的多種形式
Python語(yǔ)言本身有許多獨(dú)特之處, 入門(mén)易難精通(另一個(gè)角度看,簡(jiǎn)單但強(qiáng)勁的語(yǔ)法背后隱藏了許多復(fù)雜的實(shí)現(xiàn)),現(xiàn)以Python賦值語(yǔ)句的多種形式為例說(shuō)明。
賦值語(yǔ)句的特性
賦值語(yǔ)句創(chuàng)建對(duì)象引用,而不是對(duì)象復(fù)制;
變量在首次賦值時(shí)會(huì)被創(chuàng)建,不必提前預(yù)聲明變量名;
變量在引用前必須先賦值;
執(zhí)行隱式賦值的一些操作,如: 模塊導(dǎo)入、函數(shù)和類(lèi)的定義、函數(shù)參數(shù)、for循環(huán)變量。
運(yùn)算 | 解釋 |
spam = 'Spam' | 基礎(chǔ)(basic)形式 |
spam, ham = 'yum', 'YUM' | 元組賦值(基于位置) |
[spam, ham] = ['yun', 'YUM'] | 列表賦值(基于位置) |
a, b, c, d = 'Spam' | 推廣的(generalized)序列賦值 |
a, *b = 'Spam' | 擴(kuò)展序列解包(Unpacking:解包、拆包) |
spam = ham = 'lunch' | 多目標(biāo)(multiple target)賦值 |
spam += 42 | 增強(qiáng)(augmented)賦值 |
上表取自《Python學(xué)習(xí)手冊(cè)》表 11-1
基礎(chǔ)(basic)形式
常見(jiàn),如:
a=123
元組賦值(元組解包賦值)
a, b, c= 1, 2, "john"
等同于 (a, b, c) = (1, 2, "john")
兩個(gè)整型對(duì)象1和2的分配給變量 a 和 b,字符串對(duì)象 "john" 分配給變量 c。元組可以省略括號(hào)。
也是一種交換兩個(gè)變量的值,卻不需要自行創(chuàng)建臨時(shí)變量的方式,見(jiàn)后邊“Python中交換兩個(gè)變量的值”法二。
列表賦值(列表解包賦值)
[x, y, z] = [10, 20, 30]
推廣的(generalized)序列賦值
可以為多個(gè)對(duì)象指定多個(gè)變量。任何序列或其它可迭代的值可以付給長(zhǎng)度相同的名稱序列。如:
a, b, c = 'xyz'
參見(jiàn)下圖:

擴(kuò)展序列解包(Extended sequence unpacking)
帶星號(hào)前綴的變量名字,可以收集未被匹配的元素項(xiàng)。如:
a, *b, c = [1, 2, 3, 4]
參見(jiàn)下圖:

多目標(biāo)(multiple target)賦值
Python允許你同時(shí)為多個(gè)變量賦值。例如:
a = b = c = 2
以上實(shí)例,創(chuàng)建一個(gè)整型對(duì)象,值為2,三個(gè)變量被分配到相同的內(nèi)存空間上。
增強(qiáng)(augmented)賦值
除+=外,還有-=、*=、/=、%=、**=、//=
【簡(jiǎn)要說(shuō)明】
運(yùn)算符 | 描述 | 功效 |
+= | 加法賦值運(yùn)算符 | c += a 等效于 c = c + a |
-= | 減法賦值運(yùn)算符 | c -= a 等效于 c = c - a |
*= | 乘法賦值運(yùn)算符 | c *= a 等效于 c = c * a |
/= | 除法賦值運(yùn)算符 | c /= a 等效于 c = c / a |
%= | 取模賦值運(yùn)算符 | c %= a 等效于 c = c % a |
**= | 冪賦值運(yùn)算符 | c **= a 等效于 c = c ** a |
//= | 取整除賦值運(yùn)算符 | c //= a 等效于 c = c // a |
Python中交換兩個(gè)變量的值
假設(shè)
x = 10 y = 20
法一: 創(chuàng)建臨時(shí)變量,并交換
臨時(shí)變量 temp ,將 x 的值存儲(chǔ)在 temp 變量中,接著將 y 值賦給 x,最后將 temp 賦值給 y 變量。
temp = x x = y y = temp
法二:不使用臨時(shí)變量,python特有的,利用元組賦值
x, y = y, x
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python實(shí)現(xiàn)獲取網(wǎng)頁(yè)指定內(nèi)容
在當(dāng)今互聯(lián)網(wǎng)時(shí)代,網(wǎng)頁(yè)數(shù)據(jù)抓取是一項(xiàng)非常重要的技能,本文將帶你從零開(kāi)始學(xué)習(xí)如何使用Python獲取網(wǎng)頁(yè)中的指定內(nèi)容,希望對(duì)大家有所幫助2025-03-03
PyQt中使用QTabWidget實(shí)現(xiàn)多頁(yè)面布局的方法
在使用PyQt編寫(xiě)桌面應(yīng)用程序的過(guò)程中,要實(shí)現(xiàn)多頁(yè)面布局方案,可以使用QTabWidget控件來(lái)實(shí)現(xiàn),本案例提供了完整的標(biāo)簽頁(yè)管理功能,同時(shí)保持了響應(yīng)式設(shè)計(jì)的核心原則,能夠很好地適應(yīng)不同屏幕尺寸和內(nèi)容變化,感興趣的朋友一起看看吧2025-04-04
django啟動(dòng)uwsgi報(bào)錯(cuò)的解決方法
這篇文章主要給大家介紹了關(guān)于django啟動(dòng)uwsgi報(bào)錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
python可視化數(shù)據(jù)分析pyecharts初步嘗試
這篇文章主要為大家介紹了python可視化數(shù)據(jù)分析pyecharts初步嘗試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
Python3 用matplotlib繪制sigmoid函數(shù)的案例
這篇文章主要介紹了Python3 用matplotlib繪制sigmoid函數(shù)的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
python3通過(guò)udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作
這篇文章主要介紹了python3通過(guò)udp實(shí)現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python爬蟲(chóng)實(shí)戰(zhàn)之爬取京東商品數(shù)據(jù)并實(shí)實(shí)現(xiàn)數(shù)據(jù)可視化
今天再帶大家簡(jiǎn)單爬一波京東的商品數(shù)據(jù)唄,廢話不多說(shuō),文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06
Python實(shí)現(xiàn)自動(dòng)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)自動(dòng)發(fā)送郵件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12

