眾所周知,python的args是用來接收不定長的引數,而kwargs是用來接收不定長的關鍵字引數。
下面通過例項來看看如何真正的理解這兩個的用法。
def test2(a, b, *args, **kwargs):
print("------test2---------")
print(a)
print(b)
print(args)
print(kwargs)
def test1(a, b, *args, **kwargs):
print("-------test1---------")
print(a)
print(b)
print(args)
print(kwargs)
print("the output of a, b, args, kwargs")
test2(a, b, args, kwargs)
print("the output of a, b, *args, kwargs")
test2(a, b, *args, kwargs)
print("the output of a, b, *args, **kwargs")
test2(a, b, *args, **kwargs)
test1(11,22,33,44,55,66, name="zhangsan", age=18)
the output of the test code like following:
-------test1---------
1122
(33, 44, 55, 66)
the output of a, b, args, kwargs
------test2---------
1122
((33, 44, 55, 66), )
{}
從這個結果來看,(33, 44, 55, 66), 被作為乙個整體傳給了test2函式的args物件;然後kwargs沒有實參。
the output of a, b, *args, kwargs
------test2---------
1122
(33, 44, 55, 66, )
{}
從這個結果來看,(33, 44, 55, 66, )被作為乙個整體傳給了test2函式的args物件;然後kwargs沒有實參。
the output of a, b, *args, **kwargs
------test2---------
1122
(33, 44, 55, 66)
從這個結果來看,(33, 44, 55, 66)被作為乙個整體傳給了test2函式的args物件; 傳給了kwargs引數,這個才是我們期待的結果。
總結起來,可以這麼理解,*args可以理解為對實參的乙個拆包,**args也是對實參的拆包。不帶星花就不拆包,會被當做乙個整體。
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,...
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,c 3 foo 1,2,3,4,a 1,b 2,c 3 foo a 1,none,a 1...
Python中 args 和 kwargs的用法
好久沒有學習python了,應為工作的需要,再次拾起python,喚起記憶。當函式的引數不確定時,可以使用 args 和 kwargs,args 沒有key值,kwargs有key值。還是直接來 吧,廢話少說 python def fun var args farg,args print arg f...