極客干貨 2019-03-01 00:20:03 前面我們了解了Python的流程控制,,今天我們開始學(xué)習(xí)下python中函數(shù)function,; 1 函數(shù)的定義 函數(shù)是一段實(shí)現(xiàn)單一功能的代碼段,可以提高應(yīng)用的模塊性和代碼的重用率,。前面我們已經(jīng)接觸過一些Python的內(nèi)置函數(shù),,比如: print(),input(),len(),type(),id()等等 我們可以使用def關(guān)鍵字自定義函數(shù) ,格式如下: def 函數(shù)名 (參數(shù)列表): Python 標(biāo)識(shí)符的命名遵循駝峰命名法,,即包含多個(gè)單詞時(shí)首字母需要大寫,,其余字母小寫;也可以使用下劃線( _ )把每個(gè)單詞分開,,字母全部小寫,;為了提高代碼的可讀性,變量名,,函數(shù)名,,類名等都需要遵守駝峰命名規(guī)則。 注意,,PEP 8 規(guī)范建議函數(shù)在定義和調(diào)用時(shí),,代碼前面需要空兩行。 使用return關(guān)鍵字可以返回一個(gè)值,,也可以同時(shí)返回多個(gè)值(這個(gè)厲害了),;返回多個(gè)值時(shí)會(huì)封裝進(jìn)一個(gè)元組tuple里。函數(shù)可以有返回值,,也可以沒有返回值,; 定義一個(gè)空函數(shù),實(shí)例代碼: pass語句一般在函數(shù)或者類里面出現(xiàn)的比較多,,如果你的代碼實(shí)現(xiàn)暫時(shí)沒想好怎么寫的話,,可以用pass來代替,如果你留空的話程序是會(huì)報(bào)錯(cuò)的,。 2 函數(shù)傳參,,參數(shù)可以是各種對(duì)象,參數(shù)的類型大概分為這幾種: 必需參數(shù):函數(shù)調(diào)用時(shí)參數(shù)的順利和數(shù)量必須和聲明時(shí)的一致,,否則是會(huì)報(bào)錯(cuò)的,。 關(guān)鍵字參數(shù):函數(shù)調(diào)用時(shí)參數(shù)的順序與聲明時(shí)可以不一致,因?yàn)?Python 解釋器能夠用參數(shù)名匹配參數(shù)值,。 默認(rèn)參數(shù):調(diào)用函數(shù)時(shí)如果沒有傳遞參數(shù),,則會(huì)使用默認(rèn)參數(shù),默認(rèn)參數(shù)必須放在最后面,,否則會(huì)報(bào) 動(dòng)態(tài)參數(shù):當(dāng)需要傳遞更多的參數(shù)時(shí)有兩種方式,,一種是*一個(gè)星參數(shù),表示參數(shù)是以元組形式傳遞進(jìn)來 ,另外一種是 **兩個(gè)星參數(shù),,表示參數(shù)是以字典形式傳遞進(jìn)來,; 實(shí)例代碼: 3 匿名函數(shù),Python使用lambda表達(dá)式來創(chuàng)建匿名函數(shù),,形式如下: lambda 參數(shù)列表:表達(dá)式 4 變量作用域 LEGB L (Local) 局部作用域 E (Enclosing) 閉包函數(shù)外的函數(shù)中 G (Global) 全局作用域 B (Built - in) 內(nèi)置作用域(內(nèi)置函數(shù)所在模塊的范圍) 變量作用域查找規(guī)則:L –> E –> G –>B 即在局部找不到,,便會(huì)去局部外的局部找(例如閉包),再找不到就會(huì)去全局找,,再者去內(nèi)置中找,。實(shí)例如下: 在函數(shù)嵌套中內(nèi)層函數(shù)func_inner() 就是一個(gè)閉包函數(shù)。 5 全局變量和局部變量: 定義在函數(shù)內(nèi)部的變量擁有一個(gè)局部作用域,,定義在函數(shù)外的擁有全局作用域,。 局部變量只能在其被聲明的函數(shù)內(nèi)部訪問,而全局變量可以在整個(gè)程序范圍內(nèi)訪問,。 調(diào)用函數(shù)時(shí),,所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。 當(dāng)內(nèi)部作用域想修改外部作用域的變量時(shí),,可以用global和nonlocal關(guān)鍵字,,實(shí)例代碼: 如果要修改嵌套作用域(enclosing 作用域,外層非全局作用域)中的變量則需要 nonlocal 關(guān)鍵字: |
|