*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