什么是*args和**kwargs?
先来看个例子:
def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------------------------'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”
。
呵呵,知道*args和**kwargs是什么了吧。还有一个很漂亮的用法,就是创建字典:
def kw_dict(**kwargs):return kwargsprint kw_dict(a=1,b=2,c=3) == {'a':1, 'b':2, 'c':3}
其实python中就带有dict类,使用dict(a=1,b=2,c=3)即可创建一个字典了。
“人生苦短,我用python。
什么是*args和**kwargs?相关推荐
- python 中*args 和 **kwargs的区别
*args的用法 当你不确定你的函数里将要传递多少参数时你可以用*args.例如,它可以传递任意数量的参数: def print_everything(*args):for count, thing ...
- Python中*args和**kwargs的区别
https://www.cnblogs.com/yunguoxiaoqiao/p/7626992.html (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 中秋的夜,微凉, ...
- Python中*args 和**kwargs的用法探讨
当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值.不确定的意思可以是有,有几个,也可以是没有 *args可以当作可容纳多个变量组成的l ...
- Python3中参数*args和**kwargs介绍
在Python中,我们可以使用两种特殊符号将可变数量的参数传递给函数:*args和**kwargs.你可以使用任何单词代替args和kwargs,但通常做法是使用args和kwargs. ...
- Python中的*args和**kwargs是什么?该如何使用?
2020-01-16 12:30:00 全文共2911字,预计学习时长9分钟 来源:Pexels 在编程中,函数就是生命! 作为使用Python的新手--无论是编程新手,还是熟悉另一语言的人--都需要 ...
- python的认识_理解 Python 中的 *args 和 **kwargs
Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one ...
- 【Python】Python中*args 和**kwargs的用法
好久没有学习Python了,应为工作的需要,再次拾起python,唤起记忆. 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. 还是 ...
- python中args和kwargs_Python 函数参数*args和**kwargs
尽管*args和**kwargs参数不受重视,但这它们是Python中非常有用的特性.了解其中的潜能会让你成为更高效的开发者. *args和**kwargs参数到底有什么用呢?它们能让函数接受可选参数 ...
- 风云编程python-Python中*args 和**kwargs的用法
刚开始学习python的时候,对有关args,kwargs,和*的使用感到很困惑.相信对此感到疑惑的人也有很多.我打算通过这个帖子来排解这个疑惑(希望能减少疑惑). 让我们通过以下5步来理解: 1. ...
- Python : 什么是*args和**kwargs[转载]
例子 def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '---------------- ...
最新文章
- 机器学习入门(08)— 损失函数作用和分类(均方误差、交叉熵误差)
- 【网摘】检测 iframe 是否加载完成
- R语言计算回归模型的SST、SSR以及SSE指标实战
- centos 日志审计_Linux\CentOS中auditd安全审计工具的使用
- JavaScript实现按位运算符乘以无符号数multiplyUnsigned算法(附完整源码)
- maven插件编写_编写Maven插件的提示
- 工作失职的处理决定_工作失职的处理决定
- LeetCode 965. 单值二叉树
- 机器学习笔记(十八)——HMM的参数估计
- 【转】使用python进行多线程编程
- 关于Web面试的基础知识点--Javascript(二)
- C++ STL容器vector篇(三) vector容器大小和数组大小, 插入和删除元素, 存储和读取元素
- linux 串口命令
- java求梯形面积程序_Java初级应用,计算关于梯形跟圆形的面积。该程序中有3个类:Lader、Circle和主类Test。...
- 阿里巴巴字体库的下载以及三种用法
- uniapp文件体积超过 500KB报错
- 如何用excel快速实现“平均值±标准差”
- VT是什么?怎么打开教程
- 软件测试用例设计时的颗粒度
- php 高洛峰 正则,PHP 自定义 Smarty 模板引擎类 高洛峰 细说PHP
热门文章
- CentOS7环境下搭建flume
- SPH(光滑粒子流体动力学)流体模拟实现七:屏幕空间流体渲染(SSF)
- php新闻列表排序,javascript 新闻列表排序简单封装
- python 勒索病毒 源码_python生成的exe被360识别为勒索病毒原因及解决方法
- tomcat加上了https后访问不了_西部数码使用指南:部署https后访问提示存在安全隐患的排查解决方法...
- iOS开发经验总结—内存管理
- UE4 控制台管理器: 在C++中设置控制台变量
- Windows下学习Objective-C 2.0
- [转]在Windows server 2012上部署DPM 2012 SP1 RTM之安装配置
- NGUI的slider的滑动条制作(SliderScript)