def test_args_kwargs(arg1, arg2, arg3):print("arg1:", arg1)
print("arg2:", arg2)
print("arg3:", arg3)
使用*args 和*kwargs 來呼叫函式
# 首先使用 *args>>> args = ("two", 3, 5)
>>> test_args_kwargs(*args)
arg1: two
arg2: 3
arg3: 5
# 現在使用 **kwargs:
>>> kwargs =
>>> test_args_kwargs(**kwargs)
arg1: 5
arg2: two
arg3: 3
標準引數與*args 和*kwargs 的使用順序
some_func(fargs, *args, **kwargs)
fargs 標準引數,位置引數
定義函式,可以用必選引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數。
這五種可以組合使用,但排列順序必須是:必選引數、預設引數、可變引數(元組引數*args,傳遞任意數量實參字典引數**kw(傳遞任意數量關鍵字實參,接收的是字典))、關鍵字引數、命名關鍵字引數*
使用命名關鍵字引數時,要特別注意,如果沒有可變引數,就必須加乙個*
作為特殊分隔符。如果缺少*
,python直譯器將無法識別位置引數和命名關鍵字引數。
def f1(a, b, c=0, *, *args, **kw)print('a=', a, 'b=', b, 'c=', c, 'args=', args, 'kw=', kw)
a為必選引數
b為必選引數,
c為預設引數(輸入值是可以修改的,如果輸入值不改,就顯示預設值。預設引數,必須指向不變物件,例如none,str)
def add_end(l=none):if l is none:
l =
return l
*可變引數(variable argumen)是:*args是非鍵值對的可變數量的引數列表。 **kwargs 是不定長度的鍵值對(關鍵字和數值)。
在引數前面加個*,例如*numbers。這裡就傳入任意個引數,包括0個引數。
#給定一組數字a,b,c……,計算a² + b² + c² + ……def calc(*numbers):
sum = 0
for n in numbers:
sum = sum+n*n
return sum
calc(1, 3, 5 , 7)
#84
呼叫函式時,位置引數必須位於關鍵字引數之前,且二者都位於函式
**kw
def person(name,age,***,**kw):name
age
***
if'phone'in
kw:
print kw['
phone']
person(
'hanmm
','10
','m
',phone = '
sss'
)hanmm
10msss
*args
def add(*args):rtn =0
for i in
args:
rtn +=i
return
rtnadd(1,5,7,9)
#result: 22 #
def add(*args):rtn =0
for i in
args:
rtn +=i
return
rtn
list = [1,5,7,9]#
先執行這行,再執行下面的add(*list)
add(*list)
#result: 22 #
Day5 07 函式的引數 引數組合
現在我們學完了位置引數 預設引數 可變引數 關鍵字引數 命名關鍵字引數五種引數型別。在python中定義函式,可以使用這五種引數進行組合。但是引數定義的順序必須是 必選引數 預設引數 可變引數 命名關鍵字引數和關鍵字引數 def f1 a,b,c 0,pp,kw print a,b,c,pp,kw ...
Python函式的引數定義
python的函式具有非常靈活的引數形態,既可以實現簡單的呼叫,又可以傳入非常複雜的引數。預設引數一定要用不可變物件,如果是可變物件,程式執行時會有邏輯錯誤!要注意定義可變引數和關鍵字引數的語法 args是可變引數,args接收的是乙個tuple kw是關鍵字引數,kw接收的是乙個dict。以及呼叫...
函式的定義和引數
在程式中,函式就是具備某一功能的工具,事先將工具準備好就是函式的定義,遇到應用場景拿來就用就是函式的呼叫 函式可以使程式分塊化,增加程式的擴充套件性和可讀性 先定義,後呼叫 定義函式 def 函式名 定義階段 造車輪階段 函式注釋寫在這裡 函式相當於工具,注釋相當於工具的說明書 塊 注意 函式定義階...