呼叫函式時,預設引數的值如果沒有傳入,則取預設值。
下例會列印預設的age,如果age沒有被傳入:
def printinfo(name, age=35):#列印任何傳入的字串
print("
name: %s
" %name)
print("
age %d
" %age)
#呼叫printinfo函式
printinfo(name="
miki
") #
在函式執行過程中 age去預設值35
printinfo(age=9 ,name="
miki
")
以上例項輸出結果:
name: mikiage: 35name: miki
age: 9
總結:有時可能需要乙個函式能處理比當初宣告時更多的引數, 這些引數叫做不定長引數,宣告時不會命名。
基本語法如下:
def functionname([formal_args,] *args, **kwargs):"""函式_文件字串
"""function_suite
return [expression]
注意:
>>> def fun(a, b, *args, **kwargs):...
"""不定長引數演示示例
"""...
print("
a =%d
" %a)
...
print("
b =%d
" %b)
...
print("
args:")
...
(args)
...
print("
kwargs: ")
...
for key, value in
kwargs.items():
...
print("
key=%s
" %value)
...>>> fun(1, 2, 3, 4, 5, m=6, n=7, p=8) #
注意傳遞的引數對應
a = 1b = 2args:
(3, 4, 5)
kwargs:
p = 8m = 6n = 7
>>>
>>>
>>>
>>> c = (3, 4, 5)
>>> d =
>>> fun(1, 2, *c, **d) #
注意元組與字典的傳參方式
a = 1b = 2args:
(3, 4, 5)
kwargs:
p = 8m = 6n = 7
>>>
>>>
>>>
>>> fun(1, 2, c, d) #
注意不加星號與上面的區別
a = 1b = 2args:
((3, 4, 5), )
kwargs:
>>>
>>>
def sum_nums_3(a, *args, b=22, c=33, **kwargs):(a)
(b)
(c)
(args)
(kwargs)
sum_nums_3(100, 200, 300, 400, 500, 600, 700, b=1, c=2, mm=800, nn=900)
說明:
函式與函式引數 二
函式引數 引數型別 位置引數 顧名思義,位置引數就是呼叫函式時,將實參基於定義形參時的順序一樣,一一傳入。如果不按順序傳參呼叫函式的話,結果可能往往出乎意料 def animal animal type,name print animal type is animal type,name is na...
Python函式之引數(二)
關鍵字引數和預設值 def hello l greeting,name print s s greeting,name hello l hello world 位置引數 hello l greeting hello name world 關鍵字引數 輸出 hello world hello worl...
C 處理可變引數函式 (二)
前面說了如何 很原始的實現可變引數的問題 但是,這樣的方法可移植性比較的查,不同的cpu 32 位 64 位可以變數對其的方法有差別。比較好的做法是用 c內部的函式庫來實現。不廢話了,貼上 include stdlib.h include stdarg.h include string h incl...