day9
-
列表
- 數(shù)據(jù):[元素1,元素2...],元素可以是任何數(shù)據(jù)類型
- 特點(diǎn):可變、有序
- 支持的相關(guān)操作:+,*,==,!=,in/not in,len(),list()
- 什么時(shí)候使用:需要保存的數(shù)據(jù)是相同性質(zhì)的數(shù)據(jù)
-
元組
- 數(shù)據(jù):(元素1,元素2...) 元素是任何數(shù)據(jù)類型
- 特點(diǎn):a, b, *c, d = 1,2,3,4,5,6,7,8,9,此時(shí)a為1,b為2,c為3-8的列表,d為9;不可變,有序
- 支持的操作:+,*,==,!=,in/not in ,len(),tuple()
- 什么時(shí)候使用:存儲(chǔ)數(shù)據(jù)的時(shí)候一般不主動(dòng)使用元組,主要是在使用函數(shù)的過程中經(jīng)常遇到元組
-
字典
- 數(shù)據(jù):{key1:value1, key:value2...} 鍵不可變且唯一 值是任何類型數(shù)據(jù)
- 特點(diǎn):可變,無序
- 支持的相關(guān)操作:==,!=,in/not in,len(),dict()
- 什么時(shí)候使用:同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù)并性質(zhì)不同需要區(qū)分
-
集合
- 數(shù)據(jù):{元素1,元素2...} 元素不可變并且唯一
- 特點(diǎn):可變,無序
- 支持的相關(guān)操作:數(shù)據(jù)集合運(yùn)算、in/not in、len()、set()
- 什么時(shí)候使用:對(duì)數(shù)據(jù)處理設(shè)計(jì)數(shù)學(xué)集合運(yùn)算
-
==和is的區(qū)別
- python中所有的變量都是保存的數(shù)據(jù)再內(nèi)存中的地址,用一個(gè)變量給另一個(gè)變量賦值,實(shí)質(zhì)將變量中存儲(chǔ)的地址賦值操作;使用變量實(shí)質(zhì)是只用變量中地址對(duì)應(yīng)的內(nèi)存區(qū)域中的值
- ==是判斷兩個(gè)變量中變量地址對(duì)應(yīng)的值是否相等
- is是判斷兩個(gè)變量中存儲(chǔ)的地址是否相等
- 但需要注意數(shù)字和字符串是特例
a = 'abc'
b = 'abc'
id(a)
id(b)
a == b
a is b
# 此時(shí)a和b內(nèi)存地址一樣,下面兩個(gè)比較均為True
a = [1,2]
b = [1,2]
id(a)
id(b)
a == b
a is b
# 此時(shí)a和b內(nèi)存地址不一樣,下面兩個(gè)比較一個(gè)為True,一個(gè)為False
- 函數(shù)(function)
- 不使用函數(shù)可能會(huì)遇到的問題:代碼冗余,功能發(fā)生改變?cè)O(shè)計(jì)多處代碼的修改
- 什么是函數(shù):函數(shù)是對(duì)實(shí)現(xiàn)某一特定功能的代碼塊的封裝
- 函數(shù)的分類:1.自定義函數(shù) 2.系統(tǒng)函數(shù)(內(nèi)置函數(shù))
- 系統(tǒng)函數(shù):系統(tǒng)已經(jīng)實(shí)現(xiàn)的函數(shù),只需要會(huì)調(diào)用就行
- 自定義函數(shù):程序員自己聲明的函數(shù)
- 語法:
def 函數(shù)名(形式參數(shù)):
函數(shù)說明文檔
函數(shù)體
- 說明:def:關(guān)鍵字;函數(shù)名:和變量名要求一樣,見名知意;形參列表:變量名1,變量名2,變量名3...(根據(jù)情況設(shè)置變量名的個(gè)數(shù)),形參的作用是將函數(shù)外部數(shù)據(jù)傳遞到函數(shù)內(nèi);函數(shù)體:和def保持一個(gè)縮進(jìn)的一條或多條語句(實(shí)現(xiàn)函數(shù)功能的代碼塊)
- 聲明函數(shù)的步驟:1.確定函數(shù)的功能;2.根據(jù)功能確定函數(shù)名;3.確定形參(看實(shí)現(xiàn)函數(shù)的功能需不需要從外部傳值,);4.實(shí)現(xiàn)函數(shù)功能;5.確定返回值。函數(shù)聲明的時(shí)候,函數(shù)體不會(huì)執(zhí)行,
- 函數(shù)的調(diào)用:函數(shù)名(實(shí)參列表);函數(shù)是已經(jīng)聲明過的函數(shù)
- 函數(shù)的調(diào)用過程:1.回到函數(shù)聲明處;2.用實(shí)參給形參賦值(傳參),要保證每個(gè)形參要有值;3.執(zhí)行函數(shù)體(函數(shù)體執(zhí)行完成的條件之一為函數(shù)體代碼執(zhí)行完成,之二是遇到return);4.獲取返回值(看執(zhí)行函數(shù)過程中有沒有遇到return,如果遇到return,那么return后面的表達(dá)式的值就是函數(shù)返回值,如果沒有遇到return,那么函數(shù)的返回值為默認(rèn)的None);5.回到函數(shù)調(diào)用處,繼續(xù)執(zhí)行后面代碼,此時(shí)函數(shù)調(diào)用表達(dá)式的值就是函數(shù)的返回值
- 位置參數(shù)和關(guān)鍵字參數(shù):調(diào)用函數(shù)時(shí)根據(jù)實(shí)參的寫法分為位置參數(shù)和關(guān)鍵字參數(shù)
- 位置參數(shù):實(shí)參的順序與形參一一對(duì)應(yīng),中間用逗號(hào)隔開
- 關(guān)鍵字參數(shù):以'形參名1=值1,形參名2=值2...'的格式來確定實(shí)參
- 位置參數(shù)+關(guān)鍵字參數(shù):如果既有位置參數(shù),又有關(guān)鍵字參數(shù),位置參數(shù)必須寫在關(guān)鍵字參數(shù)前
- 參數(shù)默認(rèn)值:聲明函數(shù)時(shí)可以給形參賦默認(rèn)值,有默認(rèn)值得形參,在調(diào)用時(shí)可以不用給這個(gè)形參賦值。如果形參中既有有默認(rèn)值的參數(shù),又有沒有默認(rèn)值的參數(shù),有默認(rèn)值的形參需要寫在沒有默認(rèn)值得形參后;python中類型只有說明的作用,沒有約束的作用,指定類型的方式包括(1.參數(shù)賦默認(rèn)值。2.參數(shù)名:類型)
- 不定長(zhǎng)參數(shù):聲明函數(shù)時(shí),在形參前加*,那么這個(gè)參數(shù)變成不定長(zhǎng)參數(shù),可以同時(shí)接收多個(gè)實(shí)參(將這個(gè)參數(shù)變成元組);定長(zhǎng)參數(shù)要在不定長(zhǎng)參數(shù)的前面;聲明函數(shù)時(shí),在形參前加**,這個(gè)參數(shù)也會(huì)變成不定長(zhǎng)參數(shù),可以同時(shí)接收多個(gè)關(guān)鍵字參數(shù),將這個(gè)形參變?yōu)樽值?;?dāng)定義函數(shù)時(shí),形參定義順序?yàn)?位置參數(shù),*args/默認(rèn)參數(shù),默認(rèn)參數(shù)/*args,**kwargs)
- 函數(shù)的返回值:返回值是return關(guān)鍵字后面的表達(dá)式的值,就是函數(shù)調(diào)用表達(dá)式的值,若沒有遇到return,則默認(rèn)返回值為None
- return是函數(shù)體中的關(guān)鍵字(只能出現(xiàn)在函數(shù)體中)
- 作用:結(jié)束函數(shù),確定函數(shù)返回值,
- 什么時(shí)候需要返回值:如果實(shí)現(xiàn)函數(shù)的功能會(huì)產(chǎn)生新的數(shù)據(jù),就可以把這個(gè)數(shù)據(jù)作為函數(shù)返回值,在return多個(gè)值時(shí),使用逗號(hào)隔開,實(shí)質(zhì)返回一個(gè)元組