美文网首页
动态参数*args、**kwargs

动态参数*args、**kwargs

作者: 无谓着 | 来源:发表于2021-03-25 11:18 被阅读0次

    Python的动态参数有两种,分别是*args和**kwargs,动态参数,必须放在所有的位置参数和默认参数后面!
    一个星号表示接收任意个参数。调用时,会将实际参数打包成一个元组传入形式参数。如果参数是个列表,会将整个列表当做一个参数传入
    一颗*的动态参数,可接收列表、字符串、数组

    def func(*args):
        for arg in args:
            print(arg)
    
    func('a', 'b', 'c')
    
    li = [1, 2, 3]
    func(li)
    #输出结果为
    a
    b
    c
    [1, 2, 3]
    

    在传入可迭代对象列表、字符串、数组等,需要逐个元素传入,此时在传参时加*

    def func(*args):
        for arg in args:
            print(arg)
    
    li = [1, 2, 3]
    func(*li)
    

    两个星表示接受键值对的动态参数,数量任意。调用的时候会将实际参数打包成字典

    def func(**kwargs):
        for kwg in kwargs:
            print(kwg, kwargs[kwg])
            print(type(kwg))
    
    func(k1='v1', k2=[0, 1, 2])
    #输出结果
    k1 v1
    <class 'str'>
    k2 [0, 1, 2]
    <class 'str'>
    

    希望字典内的键值对能够像上面一样被逐一传入,传入参数时需要加**

    def func(**kwargs):
        for kwg in kwargs:
            print(kwg, kwargs[kwg])
    
    dic = {
        'k1': 'v1',
        'k2': 'v2'
    }
    
    func(**dic)
    #输出结果为
    k1 v1
    k2 v2
    
    

    args和*kwargs组合起来使用,理论上能接受任何形式和任意数量的参数,在很多代码中我们都能见到这种定义方式。需要注意的是,*args必须出现在**kwargs之前

    相关文章

      网友评论

          本文标题:动态参数*args、**kwargs

          本文链接:https://www.haomeiwen.com/subject/mfylhltx.html