博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python : 什么是*args和**kwargs?
阅读量:5297 次
发布时间:2019-06-14

本文共 1269 字,大约阅读时间需要 4 分钟。

先来看个例子[转载]:

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)即可创建一个字典了。

 

另:连接两个字典的方法:

第一种:

>>> a={'a':'a','b':'b'}

>>> m=dict(c='c',**a)
>>> m
{'a': 'a', 'c': 'c', 'b': 'b'}
>>>

第二种:

>>> a={'a':'a','b':'b'}

>>> m={'c':'c'}
>>> m.update(a)
>>> m
{'a': 'a', 'c': 'c', 'b': 'b'}
>>>

 

转载于:https://www.cnblogs.com/beilon/archive/2008/07/31/1257218.html

你可能感兴趣的文章
jquery插件实现分页
查看>>
iOS- 如何将应用集成发短信、发邮件、打电话
查看>>
Python3 windows如何安装模块 setuptools
查看>>
对quartz的总结
查看>>
Tomcat源码分析(二)--连接处理 转载
查看>>
Naive Bayes 笔记
查看>>
自然数的K次幂的数列求和
查看>>
OWIN是什么?
查看>>
258. Add Digits
查看>>
win10超极本调整分区后分区不见找回资料的办法
查看>>
Ubuntu 上 Hadoop 1.0.3 单节点 配置-运行 成功
查看>>
Jenkins 学习笔记(1):安装&配置
查看>>
Xilinx SDK中内存值读法
查看>>
iOS之定位与地图
查看>>
大家一起学VIM读书笔记(2)
查看>>
用队列来处理订单以及集合间性能比较
查看>>
ADO.Net——增、删、改、查
查看>>
07-while循环注意点
查看>>
包含文件导航栏在不同页面之间的跳转----样式改变
查看>>
《Linus Torvalds 自传》摘录
查看>>