(十五)python3 可变长参数(arg,*args,**kwargs)

 可变长参数(*args,**kwargs)

一、最常见的是在定义函数时,预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成*args 和**kwargs。  *(星号)才是必须的. 你也可以写成*ar 和**k. 而写成*args 和**kwargs只是一个通俗的命名约定.分别代表的是元组和字典
def x(arg, *args, **kwargs):
    print('arg--> {}'.format(arg))
    print('args--> {} '.format(args))
    print('kwarg--> {} '.format(kwargs))


x(1,2,3,4,key1="value1")

#结果
# arg--> 1
# args--> (2, 3, 4) 
# kwarg--> {'key1': 'value1'} 

  在函数调用时,位置参数传递必须在关键字参数左边或者说前面,**kwargs接收关键字参数,生成字典。*args接收除第一个位置参数和关键字参数外的其它参数生成元组,根参数是什么数据类型无关。

 

def x(arg, *args, **kwargs):
    print('arg--> {}'.format(arg))
    print('args--> {} '.format(args))
    print('kwarg--> {} '.format(kwargs))


x(1,(2,3,),4,key1="value1")

#arg--> 1
#args--> ((2, 3), 4) 
#kwarg--> {'key1': 'value1'}

 

二、函数调用时使用*args、**args

 下面方式调用应该不难理解

def print_info(name,age,sex):
    print('name--> {}'.format(name))
    print('age--> {} '.format(age))
    print('sex--> {} '.format(sex))


print_info("name1",25,"男")

#name--> name1
# age--> 25 
# sex--> 男 

 换个方式:*args,**kwargs

def print_info(name, age, sex):
    print('name--> {}'.format(name))
    print('age--> {} '.format(age))
    print('sex--> {} '.format(sex))


list = ["李刚", 20, "男"]

dic = {"name": "王某某", "age": 30, "sex": "女",}

print_info(*list)

# 将列表或元组前加“*”并传组函数,(注意:元素个数与位置必须对应)结果如下。
# name--> 李刚
# age--> 20
# sex--> 男



print_info(**dic)
# 同样在传入的字典前加上“**”,此时字典会被解析成key=value的形式。注意key值和个数不能大于形参,结果如下

# name--> 王某某
# age--> 30
# sex--> 女

 

综合一下:  

print_info("小刚",age=18,**{"sex":"男"})

#
name--> 小刚
age--> 18 
sex--> 男 

  

转载于:https://www.cnblogs.com/a-ant/p/11001311.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值