zoukankan      html  css  js  c++  java
  • python函数动态参数详解

    Python的动态参数:

      1,参数前一个“*”:在函数中会把传的参数转成一个元组。

        

    1 def func (*args):
    2     print(args)
    3 
    4 func(123,1,2,'a')

    result:(123, 1, 2, 'a')

      2,“**args”的参数:函数中被转成一个字典。

        

    如果这样传参的话会报错,因为没有指定key或value:
    def func (**args):
        print(args)
    
    func(123,1,2,'a')
    
    result:TypeError: func() takes 0 positional arguments but 4 were given
    
    
    
    def func (**args):
        print(args)
    
    func (a=1,b=2)
    
    result:{'a': 1, 'b': 2}

    3,混合动态参数的情况:

    def func (*args,**kwargs):
        print("%s----%s" %(args,kwargs))
    
    func (1,2,a=1,b=2)
    
    Result:(1, 2)----{'b': 2, 'a': 1}
    
    也是没问题的,需要注意的是必须*args在前**kwargs在后,参数也是一样。

    4,变量当动态参数的情况:

     

    这种情况如果我们直接把一个list传到前面,一个dict传到后面:
    
    def func (*args,**kwargs):
        print("%s----%s" %(args,kwargs))
    
    list=[1,2]
    dic={'a':1,'b':2}
    
    func (list,dic)
    
    Result:([1, 2], {'b': 2, 'a': 1})----{}       后面的字典竟然是空的- -!
    
    
    So,我们需要叫函数知道那个变量是*args的参数,哪个是**args的参数,正确传参写法:
      
    func(*list,**dic
    
    Result:(1, 2)----{'a': 1, 'b': 2}

      

        

    51_陆雅亮
  • 相关阅读:
    SuffixArray
    CodeForces722C
    CodeForces1000C
    浅谈定积分
    浅谈线段树
    飞行员配对方案问题
    FhqTreap的区间翻转
    NOI2004郁闷的出纳员
    二分图匹配
    Far Relative’s Problem (贪心 计算来的最多客人)
  • 原文地址:https://www.cnblogs.com/cyalu/p/6019798.html
Copyright © 2011-2022 走看看