定義
定義一個函數要使用 def 語句,依次寫出函數名、括號、括號中的參數和冒號:,然後,在縮進塊中編寫函數體,函數的返回值用 return 語句返回。
# -*- coding: utf-8 -*-
def add(x, y):
z = x + y
return x, y, z
print add(1, 2)
print add(1, 2)[1]
**使用遞歸函數需要注意防止棧溢出。**在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出。可以試試計算 fact(10000)。
函數的默認參數的作用是簡化調用,由於函數的參數按從左到右的順序匹配,所以默認參數只能定義在必需參數的後面:
# -*- coding: utf-8 -*-
def add(x, y=10):
z = x + y
return x, y, z
print add(1)
print add(1, 2)
結果:
(1, 10, 11)
(1, 2, 3)
可變參數的名字前面有個 * 號,我們可以傳入0個、1個或多個參數給可變參數;
可變參數也不是很神祕,Python解釋器會把傳入的一組參數組裝成一個tuple傳遞給可變參數,因此,在函數內部,直接把變量 args 看成一個 tuple 就好了。
# -*- coding: utf-8 -*-
def add(*args):
return args, args[0] + 3
print add(1)
print add(1, 'c')
結果:
((1,), 4)
((1, ‘c’), 4)