可变长参数(*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--> 男

  

最新文章

  1. Mac osx 安装PIL出现Some externally hosted files were ignored (use --allow-external PIL to allow).
  2. 安装mysql
  3. Ubuntu 部署 Node.js 应用
  4. appserver安装常见的问题
  5. RabbitMQ官方中文入门教程(PHP版) 第二部分:工作队列(Work queues)
  6. ORM框架
  7. 如何单独启动wamp 中自带的MySQL
  8. 关于jquery easyui treegrid的问题
  9. vc不用IDE编译方法
  10. hdu 1092 A+B for Input-Output Practice (IV)
  11. [C#]判断是否是合法的IP4,IP6地址
  12. java基础知识(一)
  13. Linux中Firefox——Httpfox插件安装及使用
  14. 关于ThinkPHP下使用Uploadify插件 仅有火狐提示HTTP Error (302)错误的解决办法
  15. webapp之路--理解viewport的使用
  16. Ubuntu系统下搭建PPTP类型VPN环境
  17. jQuery 插件格式 规范
  18. Oracle day04 DML_事务_序列_视图_数据类型_DDL
  19. eclipse is missing required source folder src/test/java
  20. CDN使用心得:加速双刃剑

热门文章

  1. 通过爬虫爬取四川省公共资源交易平台上最近的招标信息 --- URLConnection
  2. 浅谈并查集 By cellur925【内含题目食物链、银河英雄传说等】
  3. 前端基础jQuery
  4. _bzoj1014 [JSOI2008]火星人prefix【Splay】
  5. Hadoop集群搭建及MapReduce应用
  6. Netflix正式开源其API网关Zuul 2--转
  7. C#_JDBC连接数据库
  8. 外文翻译 《How we decide》赛场上的四分卫 第二节
  9. js对象数组深度去重和深度排序
  10. 快速排序算法原理及其js实现