Python之封裝與解構(gòu)

舉例:a和b交換賦值
a = 4 b = 5 temp = a a = b b = temp
等價(jià)于a, b = b, a
上句中,等號(hào)右邊使用了封裝,而左邊就使用了解構(gòu)

封裝

右邊封裝,將多個(gè)值使用逗號(hào)分割,組合在一起,本質(zhì)上,返回一個(gè)元組,只是省掉了小括號(hào),是python特有語法,被很多語言學(xué)習(xí)和借鑒



注:在封裝與結(jié)構(gòu)過程中,右邊的封裝過程是先進(jìn)行的

解構(gòu)

線性結(jié)構(gòu)的元素解開,并順序的賦給其它變量
左邊接納的變量數(shù)要和右邊解開的元素個(gè)數(shù)一致

使用 *變量名 接收

但不能單獨(dú)使用,被 變量名 收集后組成一個(gè)列表*


單獨(dú)使用會(huì)報(bào)錯(cuò):

也不能連續(xù)使用:

丟棄變量

這是一個(gè)慣例,是一個(gè)不成文的約定,不是標(biāo)準(zhǔn):如果不關(guān)心一個(gè)變量,就可以定義改變量的名字為_。
_ 是一個(gè)合法的標(biāo)識(shí)符,也可以作為一個(gè)有效的變量使用,但是定義成下劃線就是希望不要被使用,除非你明確的知道這個(gè)數(shù)據(jù)需要使用
實(shí)例:



注:
_ 是合法的標(biāo)識(shí)符,看到下劃線就知道這個(gè)變量就是不想被使用
_ 還是一種特殊變量: _ 表示前一次輸出; __ 表示倒數(shù)第二次輸出; ___ 表示倒數(shù)第三次輸出; _dh 目錄歷史; _oh 輸出歷史

總結(jié):

_ 這個(gè)變量本身無任何語義,沒有任何可讀性,所以不是用來給人使用的Python中很多庫,都使用這個(gè)變量,使用十分廣泛。請(qǐng)不要在不明確變量作用域的情況下,使用 _ 導(dǎo)致和庫中_ 沖突

練習(xí):

1、從lst = [1,(2,3,4),5]中,提取4出來

lst = [1,(2,3,4),5]
_,(*_,a),_ = lst
print(a)

2、環(huán)境變量JAVA_HOME=/usr/bin,返回環(huán)境變量名和路徑

key, _ , val = "JAVA_HOME=/usr/bin".partition('=')  
#字符串分割:partition(sep) -> (head, sep, tail)
print(key)
print(val)

#運(yùn)行結(jié)果:
JAVA_HOME
/usr/bin

3、對(duì)列表[1, 9, 8, 5, 6, 7, 4, 3, 2]使用冒泡法排序,要求使用封裝和解構(gòu)來交互數(shù)據(jù)

lst = [1, 9, 8, 5, 6, 7, 4, 3, 2]
for i in range(9):
    for j in range(8):
        if lst[j] > lst[j+1]:
            lst[j],lst[j+1] = lst[j+1],lst[j]
print(lst)

#結(jié)果
[1, 2, 3, 4, 5, 6, 7, 8, 9]

4、 lst = list(range(10)) # 這樣一個(gè)列表,取出第二個(gè)、第四個(gè)、倒數(shù)第二個(gè)

lst = list(range(10))
_,a,_,b,*_,c,_ = lst
print(a,b,c)
#結(jié)果
1 3 8
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,542評(píng)論 1 19
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,613評(píng)論 0 13
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,384評(píng)論 0 17
  • 還記得年少時(shí)你我約定的那天嗎? 我記得你曾說過要相約2008,你曾說過要一起去北京看奧運(yùn),去你想去...
    Gerry1003閱讀 231評(píng)論 0 0
  • 你想要努力綻放自己,卻又要保持不變的風(fēng)格。你看著別人其樂融融,你卻身在其中心在其外。 你終究還是回...
    斌心依舊閱讀 296評(píng)論 0 0

友情鏈接更多精彩內(nèi)容