python *args 和**kwargs的用法
来源:互联网 发布:亮剑 都梁 知乎 编辑:程序博客网 时间:2024/06/15 12:29
当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。
关于args:
#!-*-coding:utf-8-*-#__author__ = 'ecaoyng'def func_args(farg, *args): print("The first arg is %s" % farg) print(type(args)) for arg in args: print('Other arg is %s' % arg)func_args('hello','dear', 'python')输出:The first arg is hello<class 'tuple'>Other arg is dearOther arg is python
当然,也可以将
parameters = ['hello','dear', 'python']func_args(*parameters)结果也是一样的
kwargs的用法
#!-*-coding:utf-8-*-#__author__ = 'ecaoyng'def fun_var_kwargs(farg, **kwargs): print ("arg:", farg) for key in kwargs: print("another keyword arg: %s: %s" % (key, kwargs[key]))# fun_var_kwargs(farg=1, myarg2="two", myarg3=3)kargs={'a': 1, 'b': 2, 'c': 3, 'd' : 4}fun_var_kwargs(kargs)print('='*40)fun_var_kwargs('First',**kargs)
输出结果:
arg: {'a': 1, 'd': 4, 'b': 2, 'c': 3}========================================arg: Firstanother keyword arg: a: 1another keyword arg: d: 4another keyword arg: b: 2another keyword arg: c: 3
现在更进一步讨论Python的星号(、*)的作用
当函数的参数前面有一个星号的时候表示这是一个可变的位置参数,两个星号*表示是可变的关键字参数。
def foo(*args, **kwarg): for item in args: print('In args:') print(item) for k,v in kwarg.items(): print('In kwarg') print (k,v) print(30*'=')foo(1, 2, 3, a=4, b=5)# outputs:# 1 in args.# 2 in args.# 3 in args.# (a,4) in kwarg.# (b,5) in kwarg.foo(2, 3, a=4, b=5, c=1)# outputs:# 2 in args.# 3 in args.# (a,4) in kwarg.# (b,5) in kwarg.# (c,1) in kwarg.#如上,我们可以传入任意多个参数v = (1, 2, 4)v2 = [11, 15, 23]d = {'a': 1, 'b': 12}foo(v, d)# In args:# (1, 2, 4)# In args:# {'a': 1, 'b': 12}foo(*v, **d)# In args:# 1# In args:# 2# In args:# 4# In kwarg# b 12# In kwarg# a 1foo(v2, d)# In args:# [11, 15, 23]# In args:# {'b': 12, 'a': 1}foo(*v2, **d)# In args:# 11# In args:# 15# In args:# 23# In kwarg# a 1# In kwarg# b 12
注意
上面的示例中如果v、v2、d没有加星号那么就当成了一个参数传递给了函数,如果加了星号那么就会解包后传递给函数。
可变位置参数*args是一个元组,是不可修改的。
对于字典类型的如果只使用一个型号*那么传入的只是字典的键。
阅读全文
0 0
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- python的*args和**kwargs用法
- Python中*args 和**kwargs的用法
- Python中 *args 和 **kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- Python中*args 和**kwargs的用法
- 使用keepalived实现双机热备
- DA1458x BASS 初始化 -- Battery Service 分析(三)
- llvm install
- 汽车经销商集团财务必修课:如何做好多品牌、多店的财务管理?
- Git常用命令总结
- python *args 和**kwargs的用法
- openpose 问题汇总
- aside标签
- 在不root手机的情况下读取Data目录下的文件
- 对深搜的理解问题——
- Java中堆内存和栈内存详解
- JS,jQuery轻松实现input图片上传预览功能
- 转转大师免费删除PDF文件密码
- 3-3 构造函数的调用(高级)