天天看點

python【4】-函數

定義一個函數要使用<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,如需轉載請自行聯系原作者