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='2', c=3)

输出结果如下:

args = (1, 2, 3, 4)

kwargs = {}

—————————————

args = ()

kwargs = {‘a’: 1, ‘c’: 3, ‘b’: 2}

—————————————

args = (1, 2, 3, 4)

kwargs = {‘a’: 1, ‘c’: 3, ‘b’: 2}

—————————————

args = (‘a’, 1, None)

kwargs = {‘a’: 1, ‘c’: 3, ‘b’: ’2′}

—————————————

可以看到,这两个是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)即可创建一个字典了。

python动态参数解释:

* 表示一个任意长度的tuple(元组),可以接受一连串的参数;

** 表示一个dictionary(字典),参数形式是“key=value”。

理解 Python 中的可变参数 *args 和 **kwargs:

默认参数:  Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def getSum(x,y=5): print "x:", x print "y:& ...

Python函数可变参数*args及**kwargs详解

初学Python的同学们看到代码中类似func(*args, **kwargs)这样的函数参数定义时,经常感到一头雾水. 下面通过一个简单的例子来详细解释下Python函数可变参数*args及**kw ...

[Python学习笔记-004] 可变参数*args和**kwargs

在Python中,可变参数的传递使用*args和**kwargs来实现,其中: *args表示任意个位置参数(positional argument),被表示为一个只读的数组(tuple): **kw ...

函数参数中经常见到的*args和**kwargs

在python中,这两个是python中的可变参数,*arg表示任意多个无名参数,类型为tuple;**kwargs表示关键字参数,为dict. 例如下面这个代码可以利用*args计算传入的n个数的平 ...

讲讲python中函数的参数

python中函数的参数 形参:定义函数时代表函数的形式参数 实参:调用函数时传入的实际参数 列如: def f(x,y): # x,y形参 print(x, y) f(1, 2) # 1, 2 实参 ...

Python中函数传递参数有四种形式

Python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...

python 中函数的参数

一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...

深入理解python中函数传递参数是值传递还是引用传递

深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...

Python中函数参数 *args 和 **kwargs

普通参数,即在调用函数时必须按照准确的顺序来进行参数传递. 默认参数,即参数含有默认值,在调用函数时可以进行参数传递,若没有进行参数传递则使用默认值,要注意,默认参数必须在普通参数的右侧(否则解释器无 ...

随机推荐

LoadRunner免费公开课,惠普金牌讲师亲授

[开课时间]:9月13日 下午2:00—4:00(暂定)[活动费用]:免费[主办单位]:慧都学院[课程形式]:网络在线公开课 LoadRunner简介惠普软件测试解决方案LoadRunner测试实例答 ...

吐槽scala

scala可能是唯一一个编译器和IDE对代码有不同理解的语言.当你开始用scala的高级特性的时候,他们的分歧特别的大,以至于现在,intellij上的scala插件已经不敢对可能编译不通过的代码标记 ...

Selenium2+python自动化6-八种元素元素定位(Firebug和firepath)

前言 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位. 元素定位在这四个环节中是至 ...

状态压缩dp问题

问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...

node.js应用Redis数据库

node.js下使用Redis,首先: 1.有一台安装了Redis的服务器,当然,安装在本机也行 2.本机,也就是客户端,要装node.js 3.项目要安装nodejs_redis模块 注意第 3 点 ...

redistribute and Suboptimal routing

重分发和次优路由 基础环境 拓扑: 分别配置好基本的环境,包含ip地址,路由协议的启用,得到他们的路由表分别为 R1: R2: R3: R4: 1.      在R1上将eigrp和OSPF进行双向重 ...

电容式触摸控制器PCB布局

在目前市场上可提供的PCB(印刷电路板)基材中,FR4是最常用的一种.FR4是一种玻璃纤维增强型环氧树脂层压板,PCB可以是单层或多层. 在触摸模块的尺寸受限的情况下,使用单层PCB不是总能行得通的, ...

python模块安装报错 :error: command 'gcc' failed with exit status 1

参考:http://blog.csdn.net/fenglifeng1987/article/details/38057193 解决方法 yum install gcc libffi-devel py ...

ArcGIS中实现指定面积蜂窝(正六边形)方法

本篇博文为博主(whgiser)原创,转载请注明. 空间聚集研究中,地理尺度大多数都是基于格网构建的,只需fishnet下就行了.也常有使用社区.交通小区(TZ)作为研究单元的.直到发现蜂窝网络做出的 ...

初学者必看的文章:在VM12中安装 RedHat RHEL7.2  系统的详细步骤:看我如何操纵RHEL系统

一.开始安装 1)新建虚拟机 RHEL7.2 2)成功引导系统--开机出现此画面 Install Red Hat EnterpriseLinux 7.2  安装RHLE7.2 操作系统 Test th ...

python魔法参数_python中的魔法参数:*args和**kwargs相关推荐

  1. python中函数的可变参数_Python中函数的参数定义和可变参数

    转自:http://www.cnblogs.com/tqsummer/archive/2011/01/25/1944416.html 刚学用Python的时候,特别是看一些库的源码时,经常会看到fun ...

  2. python什么是可变参数_python中的可变参数和不可变参数

    原博文 2016-11-08 21:35 − 知识点:Python中,万物皆对象. python中不存在所谓的传值调用,一切传递的都是对象的引用,也可以认为是传址. 一.可变对象和不可变对象 Pyth ...

  3. python 太灵活_Python中的灵活参数

    别这样!:) 但如果你还想,我建议你有一个中间类或函数来处理这个问题: 伪代码:def printTheNumber(num): print num def intermediatePrintTheN ...

  4. python kwargs是什么参数_Python中*args 和 **kwargs的用法总结

    对于大部分Python新手来说,*args和**kwargs这两个魔法变量需要花大量的时间来解释.那么它们到底是什么呢?在什么时候使用它们呢?要搞清楚这些问题,首先你要明白,其实并不是必须写成*arg ...

  5. python中关键字参数的特点_Python中的*可变参数与**关键字参数

    1.定义了一个需要两个参数的函数 def print_str(first, second): print first print second if __name__ == "__main_ ...

  6. python sep函数_Python中带有print()函数的sep参数

    python sep函数 sep parameter stands for separator, it uses with the print() function to specify the se ...

  7. python默认参数举例_Python中的默认参数实例分析

    本文研究的主要是Python中的默认参数的相关内容,具体如下. 熟悉C++语言的可以知道,C++语言中的默认参数是写在函数声明中的,为语法糖,与函数的调用无关,是在函数调用的时候由编译器补齐参数然后进 ...

  8. python 魔法函数是什么意思_Python 中的魔法函数

    魔法函数是Python中的特性,学习好魔法函数将有助于我们写出优秀的pythonic(优雅的.地道的.整洁的)代码,同时因为Python语言的特性,我们在进行框架设计的时候除了设计模式等高级技能,魔法 ...

  9. python函数定义时参数相当于占位符_python中函数的参数

    形参:定义函数时代表函数的形式参数 实参:调用函数时传入的实际参数 列如: def f(x,y): # x,y形参 print(x, y) f(1, 2) # 1, 2 实参 定义函数时,形参分为普通 ...

最新文章

  1. angular.foreach 格式
  2. 沫沫金:Java快速合并两个数组【绝技】
  3. python—OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用
  4. matlab中的i=1 length,黄伟建:matlab for i=1:length(y) 什么意思
  5. MutationObserver 监听DOM树变化
  6. [Leedcode][JAVA][第42题][动态规划][双指针][栈]
  7. OpenShift 4 - DevSecOps Workshop (15) - 利用OpenShift GitOps向多个目标部署应用
  8. C++开发工程师可以分为几层?
  9. 485有时候从机接收指令没反应_多动症儿童反应慢好几拍?神经递质释放速度太慢就会出现这种问题!科学训练高效提升孩子反应力!...
  10. Microsoft Visio Pro 2016产品密钥破解完整免费下载
  11. c语言字符串转16进制及16进制转字符串
  12. 直方图规定化计算过程
  13. AD15画板的总流程
  14. Windows版navicat11破解
  15. java开发mdm平台_Apple iOS MDM开发流程
  16. Unity针对文件进行MD5码校验
  17. 使用神经计算棒二代在OpenVino下推理基于Keras转换的TensorFlow 模型
  18. 著名的十大经济学效应
  19. (转置矩阵)将一个3x3、4x4矩阵转置后输出
  20. 宝宝纸尿裤怎么选?我联合2000位宝妈,对20款纸尿裤做了次测评

热门文章

  1. O(∩_∩)O哈哈~
  2. 【89】nbtstat
  3. jQuery的追加节点
  4. Liunx:核实文件数量和大小
  5. javaweb校园外卖配送系统ssm482
  6. 小航编程题库蓝桥杯stem科技素养模拟练习试卷(中级第1套)(含题库教师学生账号)
  7. 此计算机核心参数,买电脑如何选CPU?这三个参数一定要看!
  8. C# 海康DVR客户端开发系列(1)—— 准备
  9. 苹果手机语音备忘录在哪_涨知识了!原来苹果手机备忘录还有高级玩法,纸质文档轻松电子化...
  10. Linux 为何对病毒免疫[转]