Python核心編程第十一章(函數(shù)和函數(shù)式編程)

函數(shù)的返回對(duì)象類型是None

函數(shù)中返回對(duì)象的數(shù)目:

關(guān)鍵字參數(shù):僅僅針對(duì)函數(shù)的調(diào)用

choice()是不能直接訪問的,需要導(dǎo)入 random 模塊,然后通過 random 靜態(tài)對(duì)象調(diào)用該方法。

seq -- 可以是一個(gè)列表,元組或字符串

實(shí)現(xiàn)返回隨機(jī)項(xiàng)

random.randint()的函數(shù)原型為:random.randint(a, b),用于生成一個(gè)指定范圍內(nèi)的整數(shù)。其中參數(shù)a是下限,參數(shù)b是上限,生成的隨機(jī)數(shù)n: a <= n <= b

在函數(shù)調(diào)用中使用*和**符號(hào)來制定元組和字典

創(chuàng)建函數(shù):

def語句

前向引用:

Python不允許在函數(shù)未聲明之前對(duì)其進(jìn)行引用或調(diào)用

函數(shù)屬性:

內(nèi)部/內(nèi)嵌函數(shù):在函數(shù)體內(nèi)創(chuàng)建另一個(gè)函數(shù),只可以在函數(shù)體內(nèi)調(diào)用

函數(shù)裝飾器:

裝飾器的語法以@開頭,接著是裝飾函數(shù)的名字和可選參數(shù)

@decorator(dec_opt_args)

def func2Bdecorated(func_opt_args):

:

其實(shí)總體說起來,裝飾器其實(shí)也就是一個(gè)函數(shù),一個(gè)用來包裝函數(shù)的函數(shù),裝飾器在函數(shù)聲明完成的時(shí)候被調(diào)用,調(diào)用之后聲明的函數(shù)被換成一個(gè)被裝飾器裝飾過后的函數(shù)

裝飾函數(shù)的參數(shù)是被裝飾的函數(shù)對(duì)象,返回原函數(shù)對(duì)象

有參數(shù)的和無參數(shù)的裝飾器:

@deco

def foo():pass

foo=deco(foo)

帶參數(shù)的裝飾器:

@decomaker(deco_args)

def foo():pass

sleep函數(shù):暫停執(zhí)行給定的秒數(shù)

傳遞函數(shù):

def foo():

print 'in foo()'

bar = foo

bar()

形參:

1.位置參數(shù)

2.默認(rèn)參數(shù):在函數(shù)調(diào)用時(shí)沒有為參數(shù)提供值則使用預(yù)先定義的默認(rèn)值

默認(rèn)值讓程序的健壯性上升到極高的級(jí)別

所有必須的參數(shù)都要在默認(rèn)參數(shù)之前

可變長度的參數(shù):

(1)參數(shù)以一個(gè)*號(hào)開頭的代表著一個(gè)任意長度的元組(tuple),可以接收連續(xù)一串參數(shù)

參數(shù)以兩個(gè)*號(hào)開頭的代表著一個(gè)字典,參數(shù)的形式是“key=value”,接受連續(xù)任意多個(gè)參數(shù)。語法如下:

def function_name([formal_args,] *vargs_tuple):

'function_documention_string'

function_body_suite

星號(hào)操作符之后的形參作為元組傳遞給函數(shù)(如果沒有給出額外的參數(shù),元組為空)

(2)關(guān)鍵字變量參數(shù)(字典)

關(guān)鍵字變量參數(shù)為函數(shù)定義的最后一個(gè)參數(shù)

關(guān)鍵字和非關(guān)鍵字可變長參數(shù)都有可能用在同一個(gè)函數(shù)中,只要關(guān)鍵字字典是最后一個(gè)參數(shù)并且非關(guān)鍵字元組在他前面

函數(shù)式編程:

匿名函數(shù)與lambda:

lambda [arg1[,arg2,...argN]] : expression(匿名函數(shù),不需要以標(biāo)準(zhǔn)的方式來命名)

內(nèi)建函數(shù):

過濾函數(shù)filter():每個(gè)序列元素都通過這個(gè)過濾器進(jìn)行篩選,保留函數(shù)返回為真的對(duì)象。filter函數(shù)為已知的序列的每個(gè)元素調(diào)用給定布爾函數(shù)

filter()工作原理:

map()函數(shù):map函數(shù)會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射

map(function, sequence[, sequence, ...]) -> list

當(dāng)seq只有一個(gè)時(shí),工作原理:

當(dāng)seq多于1個(gè)時(shí):

reduce()函數(shù):

它是這樣一個(gè)過程:每次迭代,將上一次的迭代結(jié)果(第一次時(shí)為init的元素,如沒有init則為seq的第一個(gè)元素)與下一個(gè)元素一同執(zhí)行一個(gè)二元的func函數(shù)。在reduce函數(shù)中,init是可選的,如果使用,則作為第一次迭代的第一個(gè)元素使用。

reduce(func,[1,2,3])=func(func(1,2),3)

partial()函數(shù)

偏函數(shù)應(yīng)用(PFA):

函數(shù)的partial應(yīng)用

變量作用域:

如果名字在過程的聲明之內(nèi),它的出現(xiàn)即為過程的局部變量。

全局變量的特征是除非被刪除,否則它們的存活到腳本運(yùn)行結(jié)束

閉包:

在內(nèi)部函數(shù)里,對(duì)在外部作用域的變量進(jìn)行引用,則內(nèi)部函數(shù)被認(rèn)為是閉包。

最后編輯于
?著作權(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)容

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