先来看个例子:

  

#! /usr/bin/env python
#coding=utf-8 def foo(*args, **kwargs):
print('args=',args)
print('kwargs=',kwargs)
print('----------------------------') if __name__ == '__main__':
foo(1,2,3,4)
foo(a=1,b=2,c=3)
foo(1,2,3,4,a=1,b=2,c=3)
foo('a',1,None,a=1,b='',c=3)

结果:

args= (1, 2, 3, 4)
kwargs= {}
--------------------------------------
args= ()
kwargs= {'b': 2, 'c': 3, 'a': 1}
--------------------------------------
args= (1, 2, 3, 4)
kwargs= {'b': 2, 'c': 3, 'a': 1}
--------------------------------------
args= ('a', 1, None)
kwargs= {'b': '2', 'c': 3, 'a': 1}
--------------------------------------

可以看到,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。

还有一个很漂亮的用法,就是创建字典:

def kw_dict(**kwargs):
  return kwargs

print(kw_dict(a=1,b=2,c=3) == {'a':1,'b':2,'c':3})

其实python中就带有dict类,使用dict(a=1,b=2,c=3)即可创建一个字典了。

最新文章

  1. 用scikit-learn学习DBSCAN聚类
  2. WCF、Web API、WCF REST、Web Service比较
  3. php入门一ubuntu16.04中php环境配置及一个网页
  4. ENode框架Conference案例分析系列之 - 上下文划分和领域建模
  5. 11、ASP.NET MVC入门到精通——AspnetMVC分页
  6. Tomcat Manager用户配置详解
  7. Hello又大了一岁
  8. vsftp 详解鸟哥版
  9. 数据库设计的误区—>CHAR与VARCHAR
  10. 在项目中创建单元测试时junit的配置和使用
  11. 系统引导修复 ---- Windows 和 Ubuntu
  12. Ubuntu 16.04 安装 Docker
  13. 南邮 base64全家桶
  14. Python之socket_udp
  15. python 文件重命名
  16. Android sdk下载找不到support library
  17. 【tools】vim删除命令
  18. 内存占用过高 kill 调整mysql内存占用
  19. LeetCode 5回文数
  20. R语言列表list函数

热门文章

  1. 016-Hadoop Hive sql语法详解6-job输入输出优化、数据剪裁、减少job数、动态分区
  2. 【转载】Java中使用Jedis操作Redis
  3. Kafka配置参数说明
  4. corethink功能模块探索开发(六)让这个模块在前台显示
  5. Python基础(14)_python模块之configparser模块、suprocess
  6. 系统非正常关机启动后出现:an error occurred during the file system
  7. $Android自定义控件风格的方法
  8. oracle 定时删除3天前的备份数据
  9. spring data jpa是什么?
  10. 一个由自增运算符以及C语法顺序细节引起的bug