函式引數 二

2022-08-15 02:48:12 字數 1958 閱讀 3879

呼叫函式時,預設引數的值如果沒有傳入,則取預設值。

下例會列印預設的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: miki

age: 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:")

...

print

(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):

print

(a)

print

(b)

print

(c)

print

(args)

print

(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...