一、預設參數 定義函數的時候,還可以有預設參數。 例如Python自帶的 int() 函數,其實就有兩個參數,我們既可以傳一個參數,又可以傳兩個參數: >>> int('123') 123 >>> int('123', 8) 83 int()函數的第二個參數是轉換進位,如果不傳,預設是十進位 (ba ...
一、預設參數
定義函數的時候,還可以有預設參數。
例如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
二、可變參數
如果想讓一個函數能接受任意個參數,我們就可以定義一個可變參數:
def fn(*args):
print (args)
可變參數的名字前面有個 * 號,我們可以傳入0個、1個或多個參數給可變參數:
'''
學習中遇到問題沒人解答?小編創建了一個Python學習交流群:711312441
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
>>> fn()
()
>>> fn('a')
('a',)
>>> fn('a', 'b')
('a', 'b')
>>> fn('a', 'b', 'c')
('a', 'b', 'c')
可變參數也不是很神秘,Python解釋器會把傳入的一組參數組裝成一個tuple傳遞給可變參數,因此,在函數內部,直接把變數 args 看成一個 tuple 就好了。
定義可變參數的目的也是為了簡化調用。假設我們要計算任意個數的平均值,就可以定義一個可變參數:
def average(*args):
sum = 0.0
if len(args) == 0:
return sum
for x in args:
sum = sum + x
return sum / len(args)
這樣,在調用的時候,可以這樣寫:
>>> average()
0
>>> average(1, 2)
1.5
>>> average(1, 2, 2, 3, 4)
2.4