码迷,mamicode.com
首页 > 其他好文 > 详细

动态参数(*args,**kwargs)

时间:2018-05-16 22:34:25      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:字典   name   元祖   *args   UNC   func   关键字   red   个数   

动态传参

动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,你就用*args,**kwargs接收:

  • args是元祖形式,接收除去键值对以外的所有参数。
  • kwargs接收的只是键值对的参数,并保存在字典中。
1. *args 接收不定长的所有位置参数

args可以接收不确定个数的参数

def func(*args):
    print(args,type(args))
func(1,2,‘alex‘)

计算结果:
(1, 2, ‘alex‘) <class tuple‘>

若将*args放在最前边,它会接收全部参数,a,b就没有对应的实参了

若将*args放在最前边,它会接收全部参数,a,b就没有对应的实参了

def func(*args,a,b):
    print(a)
    print(b)
    print(args,type(args))
func(1,2,‘alex‘,3,4)

计算结果直接报错:
    func(1,2,‘alex‘,3,4)
TypeError: func() missing 2 required keyword-only arguments: ‘a‘ and ‘b‘

有默认参数的时候,要放在*args后边

def func(a, b, *args, sex = ‘男‘):
    print(a)
    print(b)
    print(args,type(args))
    print(sex)
func(1,2,‘alex‘,‘wusir‘,‘ritian‘)

计算结果:
1
2
(‘alex‘, ‘wusir‘, ‘ritian‘) <class tuple‘>
2. **kwargs 接收所有的关键字参数

接收关键字参数

def func(**kwargs):
    print(kwargs)
func(a = 1, b = 4, c = 3)

计算结果:
{‘a‘: 1, ‘b‘: 4, ‘c‘: 3}

位置参数、*args、默认参数、**kwargs

def func(a,*args,sex = ‘男‘, **kwargs):
    print(a)
    print(sex)
    print(args)  
    print(kwargs)
func(1,‘alex‘,‘wusir‘,‘ritian ‘,sex = ‘女‘,name = ‘taibai‘,age = 21)

计算结果:
1
(‘alex‘, ‘wusir‘, ‘ritian ‘)
{‘name‘: ‘taibai‘, ‘age‘: 21}

万能参数

def func(*args, **kwargs):
    print(args)
    print(kwargs)
func(1,name="alex")

计算结果:
(1,)
{‘name‘: ‘alex‘}

动态参数(*args,**kwargs)

标签:字典   name   元祖   *args   UNC   func   关键字   red   个数   

原文地址:https://www.cnblogs.com/yangwenzhe/p/9048162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!