**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)
全部评论

相关推荐

01-15 13:52
已编辑
河南大学 Java
六年要多久:标准头像,不吃香菜😂
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务