定義一個函數要使用<code></code><code></code><code>def</code><code></code><code></code>語句,依次寫出函數名、括号、括号中的參數和冒号<code>:</code>,然後,在縮進塊中編寫函數體,函數的傳回值用<code>return</code>語句傳回。如果沒有<code>return</code>語句,函數執行完畢後也會傳回結果,隻是結果為<code>None</code>。。
定義空函數可以用pass
定義函數時,需要确定函數名和參數個數;
如果有必要,可以先對參數的資料類型做檢查,資料類型檢查可以用内置函數<code>isinstance</code>實作.
函數體内部可以用<code>return</code>随時傳回函數結果;
函數執行完畢也沒有<code>return</code>語句時,自動<code>return None</code>。
函數可以同時傳回多個值,實質上就是一個tuple。
<a></a>
①預設參數
設定預設參數時,有幾點要注意:
一是必選參數在前,預設參數在後;
二是預設參數必須指向不變對象。
②可變參數
可變參數允許你傳入0個或任意個參數,這些可變參數在函數調用時自動組裝為一個tuple。定義可變參數時,需要在變量名前加星号*。
如果參數是list或者turple時,需要調用時在變量名前加星号。
③關鍵字參數
關鍵字參數允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數内部自動組裝為一個dict。
注意,參數定義的順序必須是:必選參數、預設參數、可變參數和關鍵字參數。
④總結
預設參數一定要用不可變對象,如果是可變對象,運作會有邏輯錯誤!
要注意定義可變參數和關鍵字參數的文法:
<code>*args</code>是可變參數,args接收的是一個tuple;
<code>**kw</code>是關鍵字參數,kw接收的是一個dict。
調用函數時如何傳入可變參數和關鍵字參數的文法:
可變參數既可以直接傳入:<code>func(1, 2, 3)</code>,又可以先組裝list或tuple,再通過<code>*args</code>傳入:<code>func(*(1, 2, 3))</code>;
關鍵字參數既可以直接傳入:<code>func(a=1, b=2)</code>,又可以先組裝dict,再通過<code>**kw</code>傳入:<code>func(**{'a': 1, 'b': 2})</code>。
python中使用lambda關鍵字定義匿名函數的.
例如:将字元串集合元素按照長度進行排序.
函數柯裡化就是固定函數的幾個參數,進而泛化出多個不同意義的函數。這需要用到内置的functools子產品的partial函數。例如:
如需轉載,請标明原文連結:http://www.cnblogs.com/janes/
本文轉自 陳敬(Cathy) 部落格園部落格,原文連結:http://www.cnblogs.com/janes/p/5530780.html,如需轉載請自行聯系原作者