函數(shù):
函數(shù)是組織好的彤守,可重復(fù)使用的醉途,用來實現(xiàn)單一毡熏,或相關(guān)聯(lián)功能的代碼段舍扰。
定義和調(diào)用
定義:Def函數(shù)名(參數(shù)):
函數(shù)代碼塊
Return表達(dá)式
調(diào)用:
函數(shù)名
四種類型:
有參有返
無參無返
有參無返
無參有返
嵌套
Def下的永遠(yuǎn)只是定義
函數(shù)名()才是調(diào)用
可變參數(shù)和不可變參數(shù):
可變參數(shù):
字典倦蚪、元組
不可變參數(shù):
整數(shù)、字符串边苹、元組陵且。如fun(a),傳遞的只是a的值,沒有影響a對象本身慕购。比如在 fun(a)內(nèi)部修改 a 的值聊疲,只是修改另一個復(fù)制的對象,不會影響 a 本身沪悲。
必選參數(shù)和默認(rèn)參數(shù):
必選參數(shù)須以正確的順序傳入函數(shù)获洲。調(diào)用時的數(shù)量必須和聲明時的一樣。
默認(rèn)參數(shù) 調(diào)用函數(shù)時殿如,缺省參數(shù)的值如果沒有傳入贡珊,則被認(rèn)為是默認(rèn)值。
命名關(guān)鍵字參數(shù):
對于關(guān)鍵字參數(shù)涉馁,函數(shù)的調(diào)用者可以傳入任意不受限制的關(guān)鍵字參數(shù)门岔。至于到底傳入了哪些,就需要在函數(shù)內(nèi)部通過kv檢查烤送。
如果要限制關(guān)鍵字參數(shù)的名字寒随,就可以用命名關(guān)鍵字參數(shù)
遞歸函數(shù):
如果一個函數(shù)在內(nèi)部不調(diào)用其它的函數(shù),而是自己本身的話帮坚,這個函數(shù)就是遞歸函數(shù)妻往。
滿足遞歸的條件:
有循環(huán)的內(nèi)容
有跳出的條件
遞歸默認(rèn)是有遞歸深度要求的。
匿名函數(shù):
用lambda關(guān)鍵詞能創(chuàng)建小型匿名函數(shù)叶沛。這種函數(shù)得名于省略了用def聲明函數(shù)的標(biāo)準(zhǔn)步驟蒲讯。
lambda函數(shù)的語法只包含一個語句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
注意:
Lambda函數(shù)能接收任何數(shù)量的參數(shù)但只能返回一個表達(dá)式的值
匿名函數(shù)不能直接調(diào)用print灰署,因為lambda需要一個表達(dá)式
函數(shù)式編程介紹
函數(shù)是Python內(nèi)建支持的一種封裝,我們通過把大段代碼拆成函數(shù)局嘁,通過一層一層的函數(shù)調(diào)用溉箕,就可以把復(fù)雜任務(wù)分解成簡單的任務(wù),這種分解可以稱之為面向過程的程序設(shè)計悦昵。函數(shù)就是面向過程的程序設(shè)計的基本單元肴茄。
函數(shù)式編程的一個特點就是,允許把函數(shù)本身作為參數(shù)傳入另一個函數(shù)但指,還允許返回一個函數(shù)寡痰!
包括以下5類:
高階函數(shù)
返回函數(shù)
匿名函數(shù)
裝飾器
偏函數(shù)
高階函數(shù):
map()函數(shù)接收兩個參數(shù),一個是函數(shù)棋凳,一個是Iterable拦坠,map將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的Iterator返回剩岳。