**kwargs和*args
1. *号用在形参
1.1. *args
# 主要用于不知道函数使用者会传递多少个参数,因此定义这个*last_name。 def get_name(first_name, *last_name): print(last_name, type(last_name)) get_name('Qiu', 'J','A')
1.2. **kwargs
主要用于向函数中传递关键字参数
def get_info(**kwargs): print(kwargs, type(kwargs)) get_info(name="Mary", age=18, gender="female")
1.3. args和kwargs同时使用
注意 args一般在前,*kwargs一般在后。(因为传递参数的时候,关键字参数相对于非关键字参数是放置在后面进行传递的。)
def get_all_info(name, *scores, **info): print("scores", scores, type(scores)) print("info", info, type(info)) get_all_info('mary', 100, 99, 100, gender="female")
scores (100, 99, 100) <class 'tuple'> info {'gender': 'female'} <class 'dict'>
2. 星号用于实参
2.1. 使用args和kwargs传递参数
传递元组或者列表参数。
def test_args_kwargs(arg1, arg2, arg3): print(arg1, arg2, arg3) args = (1,2,3) test_args_kwargs(*args)
传递字典参数
# 这里的键名称需要和函数的参数名一致。 def test_args_kwargs(arg1, arg2, arg3): print(arg1, arg2, arg3) kwargs = { "arg1":4, "arg2":5, "arg3":6 } test_args_kwargs(**kwargs)