定義默認(rèn)參數(shù)在python
提問(wèn)人:楊紫紅發(fā)布時(shí)間:2020-11-26
定義函數(shù)的時(shí)候,還可以有默認(rèn)參數(shù)。
例如Python自帶的 int() 函數(shù),其實(shí)就有兩個(gè)參數(shù),我們既可以傳一個(gè)參數(shù),又可以傳兩個(gè)參數(shù):
>>> int('123')
123
>>> int('123', 8)
83
int()函數(shù)的第二個(gè)參數(shù)是轉(zhuǎn)換進(jìn)制,如果不傳,默認(rèn)是十進(jìn)制 (base=10),如果傳了,就用傳入的參數(shù)。
可見(jiàn),函數(shù)的默認(rèn)參數(shù)的作用是簡(jiǎn)化調(diào)用,你只需要把必須的參數(shù)傳進(jìn)去。但是在需要的時(shí)候,又可以傳入額外的參數(shù)來(lái)覆蓋默認(rèn)參數(shù)值。
我們來(lái)定義一個(gè)計(jì)算 x 的N次方的函數(shù):
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
假設(shè)計(jì)算平方的次數(shù)最多,我們就可以把 n 的默認(rèn)值設(shè)定為 2:
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
這樣一來(lái),計(jì)算平方就不需要傳入兩個(gè)參數(shù)了:
>>> power(5)
25
由于函數(shù)的參數(shù)按從左到右的順序匹配,所以默認(rèn)參數(shù)只能定義在必需參數(shù)的后面:
# OK:
def fn1(a, b=1, c=2):
pass
# Error:
def fn2(a=1, b):
pass
例如Python自帶的 int() 函數(shù),其實(shí)就有兩個(gè)參數(shù),我們既可以傳一個(gè)參數(shù),又可以傳兩個(gè)參數(shù):
>>> int('123')
123
>>> int('123', 8)
83
int()函數(shù)的第二個(gè)參數(shù)是轉(zhuǎn)換進(jìn)制,如果不傳,默認(rèn)是十進(jìn)制 (base=10),如果傳了,就用傳入的參數(shù)。
可見(jiàn),函數(shù)的默認(rèn)參數(shù)的作用是簡(jiǎn)化調(diào)用,你只需要把必須的參數(shù)傳進(jìn)去。但是在需要的時(shí)候,又可以傳入額外的參數(shù)來(lái)覆蓋默認(rèn)參數(shù)值。
我們來(lái)定義一個(gè)計(jì)算 x 的N次方的函數(shù):
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
假設(shè)計(jì)算平方的次數(shù)最多,我們就可以把 n 的默認(rèn)值設(shè)定為 2:
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
這樣一來(lái),計(jì)算平方就不需要傳入兩個(gè)參數(shù)了:
>>> power(5)
25
由于函數(shù)的參數(shù)按從左到右的順序匹配,所以默認(rèn)參數(shù)只能定義在必需參數(shù)的后面:
# OK:
def fn1(a, b=1, c=2):
pass
# Error:
def fn2(a=1, b):
pass
繼續(xù)查找其他問(wèn)題的答案?
相關(guān)視頻回答
點(diǎn)擊加載更多評(píng)論>>