1. 程式人生 > >Python之定義預設引數

Python之定義預設引數

定義函式的時候,還可以有預設引數。

例如Python自帶的 int() 函式,其實就有兩個引數,我們既可以傳一個引數,又可以傳兩個引數:

>>> int('123')
123
>>> int('123', 8)
83

int()函式的第二個引數是轉換進位制,如果不傳,預設是十進位制 (base=10),如果傳了,就用傳入的引數。

可見,函式的預設引數的作用是簡化呼叫,你只需要把必須的引數傳進去。但是在需要的時候,又可以傳入額外的引數來覆蓋預設引數值。

我們來定義一個計算 x 的N次方的函式:

def power(x, n):
    s = 1
while n > 0: n = n - 1 s = s * x return s

假設計算平方的次數最多,我們就可以把 n 的預設值設定為 2:

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

這樣一來,計算平方就不需要傳入兩個引數了:

>>> power(5)
25

由於函式的引數按從左到右的順序匹配,所以預設引數只能定義在必需引數的後面:

# OK:
def
fn1(a, b=1, c=2):
pass # Error: def fn2(a=1, b): pass

任務
請定義一個 greet() 函式,它包含一個預設引數,如果沒有傳入,列印 ‘Hello, world.’,如果傳入,列印 ‘Hello, xxx.’

def greet(x='world'):
    print 'Hello,' + x + '.'