• 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_陆雅亮
  • 相关阅读:
    部分和问题
    区间k大数训练
    蓝桥杯基础练习-数列排序
    蓝桥杯基础练习-特殊的回文数
    蓝桥杯基础练习-回文数
    蓝桥杯基础练习-特殊的数字
    蓝桥杯基础练习-杨辉三角
    蓝桥杯基础练习-查找整数
    蓝桥杯题库基础训练-数列特征
    三道半平面交测模板题 Poj1474 Poj 3335 Poj 3130
  • 原文地址:https://www.cnblogs.com/cyalu/p/6019798.html
Copyright © 2020-2023  润新知