學習python
有所幫助。
函式定義
在python的函式定義中使用*args和**kwargs可傳遞可變引數。*args用作傳遞非命名鍵值可變長引數列表(位置引數),**kwargs用作傳遞鍵值可變長引數列表。
當你不確定你的函式裡將要傳遞多少引數時你可以用*args.例如,它可以傳遞任意數量的引數,*args 示例:
deftest_var_args(farg, *args):
print "formal arg:", farg
for argin args:
print "another arg:", arg
test_var_args(1, "two", 3)
結果:formalarg: 1anotherarg: twoanotherarg: 3
相似的,**kwargs允許你使用沒有事先定義的引數名,**kwargs示例:
deftest_var_kwargs(farg, **kwargs):
print "formal arg:", farg
for keyin kwargs:
print "another keyword arg: %s: %s" % (key, kwargs[key])
test_var_kwargs(farg=1, myarg2="two", myarg3=3)
結果:formalarg: 1anotherkeywordarg: myarg2: twoanotherkeywordarg: myarg3: 3
*args和**kwargs也可以混合使用,需要注意的是,*args需要放在**kwargs前面:
deftest_kwargs(first, *args, **kwargs):
print 'required argument: ', first
for v in args:
print 'optional argument (*args): ', v
for k, v in kwargs.items():
print 'optional argument %s (*kwargs): %s' % (k, v)
test_kwargs(1, 2, 3, 4, k1=5, k2=6)
結果:requiredargument: 1
optionalargument (*args): 2
optionalargument (*args): 3
optionalargument (*args): 4
optionalargumentk2 (*kwargs): 6
optionalargumentk1 (*kwargs): 5
函式呼叫
這種語法不僅在函式定義中可以使用,在呼叫函式是也會出現(相當於extract package的效果)
*args 示例:
deftest_var_args_call(arg1, arg2, arg3):
print "arg1:", arg1
print "arg2:", arg2
print "arg3:", arg3
args = ("two", 3)
test_var_args_call(1, *args)
結果:arg1: 1arg2: twoarg3: 3
**kwargs示例:
deftest_var_args_call(arg1, arg2, arg3):
print "arg1:", arg1
print "arg2:", arg2
print "arg3:", arg3
kwargs =
test_var_args_call(1, **kwargs)
結果:arg1: 1
arg2: two
arg3: 3
python之args和 kwargs(詳解)
args kwargs 不定長引數 def jia args s 0for i in args s i return s print jia 1,2,3 6python函式允許同時全部或部分使用使用固定引數,預設引數,單值 一顆星 可變引數,鍵值對 兩顆星 可變引數,使用時必須安裝前述順序書寫。de...
python 中 args和 kw 學習筆記
1.實參 def test 0 x,y 實參x,y print x print y test 0 4,5 452.args 非關鍵字引數,用於元組 def test 1 x,y,args args print x print y print the length of args is s len a...
python的 args和 kwargs用法
python的 args和 kwargs如何用,看了下面的例子你就清楚了。先來看乙個例子 複製 如下 def foo args,kwargs print args args print kwargs kwargs print if name main foo 1,2,3,4 foo a 1,b 2,...