python基础:*args、**kwargs

# *args、**kwargs都不是关键字,只是一种命名约定。都是可变参数。长度可为0。在调用函数中使用相当于是解包作用
# *args:位置参数。通常是以元组形式传递。
# **kwargs:关键字参数。通常以字典形式传递
# *args和**kwargs同时存在时,args必须在kwargs前面。


def args_fun(nums, *args, **kwargs):
    print(f'nums:{nums}')
    print(f'*args:{args},类型为:{args.__class__.__name__}')
    print(f'**kwargs:{kwargs},类型为:{kwargs.__class__.__name__}')
    for n in args:
        print(f'args:{n}')
    for item in kwargs.items():
        print(f'**kwargs:item-->{item}')


def args_pack_unpack(name, age, favorite):
    print(f'name:{name},age:{age},favorite:{favorite}')


if __name__ == '__main__':
    args_fun(1, 5, 6, 3, 7, 'string', name='tina', age=12)
    # 长度可为0
    args_fun(3)
    # 也可只传递key=value
    args_fun(6, age=4)

    # 在调用函数中使用时,是解包的作用
    args_tuple = ('yuhuifei', 18, 'read')
    kwargs_dict = {'name': 'tina', 'age': '100', 'favorite': 'walk'}
    args_pack_unpack(*args_tuple)
    args_pack_unpack(**kwargs_dict)
posted @ 2022-01-28 17:29  于慧妃  阅读(34)  评论(0编辑  收藏  举报