函數是對程序邏輯進行結構化和過程化的一種編程方法。能將整塊代碼巧妙地隔離成易於管理的小塊。python
函數返回多個對象時實際是返回一個包含多個對象的元組。express
建立函數: def語句編程
python不容許在函數聲明以前對其進行引用或調用。閉包
help()和 __doc__app
裝飾器:裝飾函數的包裝,返回一個修改後的函數對象。編程語言
傳遞函數:當對一個變量賦值時,其實是將相同對象的引用賦值給這個變量。函數式編程
formal arguments:
函數
位置參數:準確順序,一致數目。ui
默認參數:沒有爲參數提供值就使用預先定義的默認值。全部位置參數必須出如今默認參數以前。code
可變長度的參數:元組、字典
非關鍵字可變長參數(元組):必須在位置和默認參數以後。*
def function_name ([formal_args] *varge_tuple): fonction_body_suite
關鍵字變量參數(字典);在有不定數目的或者額外集合的關鍵字的狀況中,參數被放入一個字典中,字典中鍵爲參數名,值爲相應的參數值。
def function_name ([formal_args] [*vergst,] **vargsd): fonction_body_suite
函數式編程:python不是函數式編程語言,但支持函數式編程語言構建。
匿名函數與lambda:lambda arg1,arg2: expression
內建函數apply(),filter(),map(),reduce()
filter(func, seq):返回一個使func返回值爲true的元素的序列,
map(func, seq): 將函數調用「映射」到每一個序列的元素上,並返回一個含有全部值的列表。
reduce(bin_func, seq,init = None):摺疊
偏函數應用:將任意數量的參數的函數轉化爲另外一個帶剩餘參數的函數對象。
變量做用域:局部域和全局域
在python2.1以前,雖然存在多個函數的嵌套,但你不能訪問超過兩個做用域。
閉包:在一個內部函數裏,對外在做用域(但不是全局做用域)的變量進行引用,那麼就定義爲閉包。
做用域和lambda:在lambda語句中的表達式有和函數相同的做用域。
生成器:帶yield語句的函數,能暫停執行並返回一箇中間的結果。
協同程序:能夠運行的獨立函數調用,能夠暫停或掛起,並從程序離開的地方繼續或從新開始。
生成器的增強特性:除了next()得到下個生成的值,send()把值發送給生成器,close()要求生成器退出。