zoukankan      html  css  js  c++  java
  • *站在形参和实参的角度进行传输

    首先时站在形参的角度进行动态传输:*会将实参传输过来的参数进行聚合,返回一个元组

    def func(*args):
        return args
    l = ('a','b','c''d'),('aa','bb','cc''dd')
    l1 = [1,2,3,4,5,[11,22,33]]
    l2 = ['adsad','艾克',[1,2,3,4],{'s':'alex','name':'aike'}]
    print(func(l))
    print(func(l1))
    print(func(l2))
    
    #打印
    ((('a', 'b', 'cd'), ('aa', 'bb', 'ccdd')),)
    ([1, 2, 3, 4, 5, [11, 22, 33]],)
    (['adsad', '艾克', [1, 2, 3, 4], {'s': 'alex', 'name': 'aike'}],)

    而站在实参的角度进行动态传输:起到的作用是打散,他会将传输的参数传给形参时按顺序打散,也就是迭代,int类型不可迭代会报错

    def func(*args):
        return  args
    l = ['adsad','艾克',[1,2,3,4],{'s':'alex','name':'aike'}]
    l1 = 'adsad'
    l2 = [1,2,3,4]
    l3 = {'s':'alex','name':'aike'}
    l4 = '12121'
    print(func(*l))
    print(func(*l1))
    print(func(*l2))
    print(func(*l3))
    print(func(*l4))
    
    #打印
    ('adsad', '艾克', [1, 2, 3, 4], {'s': 'alex', 'name': 'aike'})
    ('a', 'd', 's', 'a', 'd')
    (1, 2, 3, 4)
    ('s', 'name')
    ('1', '2', '1', '2', '1')

    上面时*args,那么**kwargs会是怎么样呢

    def func(**kwargs):
        return kwargs
    l = {'a':111,'b':222,'c':333}
    l1 = {'a':'你好函数'}
    # l2 = ('a','b','c')  #报错
    print(func(**l))
    print(func(**{'a':'你好函数','b':'你好艾克','c':'你好李'}))
    print(func(**l1))
    # print(func(l2))
    # print(func(**[a = '你好,函数',c = '你好,艾克',i = '你好,李']))#报错
    # print(func(l)) #报错
    
    
    #打印
    {'a': 111, 'b': 222, 'c': 333}
    {'a': '你好函数', 'b': '你好艾克', 'c': '你好李'}
    {'a': '你好函数'}
    **即可。由于**kwargs的返回值是字典,所以在实参的角度进行动态传输必须以字典形式传入参数,否则会报错
  • 相关阅读:
    Linux_C_C++
    01玩转数据结构_09_线段树Segment Tree(区间树)
    线性代数
    概率与统计
    矩阵快速幂—— 构造矩阵
    2020百度之星程序设计大赛复赛
    Codeforces Round #662 (Div. 2)
    2020百度之星程序设计大赛初赛二
    2020百度之星程序设计大赛初赛一
    安全参考监视器支持例程(转的微软的)
  • 原文地址:https://www.cnblogs.com/aizhinong/p/11350024.html
Copyright © 2011-2022 走看看