*args和**kwargs的區別
阿新 • • 發佈:2021-01-13
技術標籤:python
*args和**kwargs的區別
1. *args直接傳入引數值,將傳參整理成Tuple
1)例子1
def function(*args):
print(args, type(args))
function(1, 2)
輸出:
(1, 2) <class 'tuple'>
2)例子2
def function(x, *args): print(args, type(args)) function(1, 2) 輸出: (2,) <class 'tuple'>
2. **kwargs必須將變數名和值一起傳遞,將傳參整理成dict
1)例子1
def function(**kwargs):
print(args, type(args))
function(a=1, b=2)
輸出:
{'a': 1, 'b': 2} <class 'dict'>
2)例子2
def function(**kwargs): print(kwargs, type(kwargs)) function(1, 2) 輸出, 報錯: Traceback (most recent call last): File "D:/Pycharm/project/DataProcess/test0116.py", line 5, in <module> function(1, 2) TypeError: function() takes 0 positional arguments but 2 were given
3)例子3
def function(x, **kwargs):
print(kwargs, type(kwargs))
function(2, a=1, b=2)
輸出:
{'a': 1, 'b': 2} <class 'dict'>
4)例子4
def function(x, **kwargs): print(kwargs, type(kwargs)) function(2, 3, a=1, b=2) 輸出, 報錯: Traceback (most recent call last): File "D:/Pycharm/project/DataProcess/test0116.py", line 5, in <module> function(2,3, a=1, b=2) TypeError: function() takes 1 positional argument but 2 were given