您现在的位置是:首页 > 文章详情

谈一谈python中的魔法变量*args和**kwargs

日期:2018-10-14点击:375

导读

最近看了看github大佬写的代码后,发现自己之前写的代码就是个,没有注释,没有封装,没有可读性。哎,幸亏发现及时,现在正在写一个新的任务,刚好可以好好弄弄架构和代码了

在弄代码期间发现了*args和**kwargs这两个参数大佬们有时候经常用,当然最多的其实是在阅读python自己的源代码的时候最长见了,今天我终于了解清楚它们到底是啥了,大家一起来看!

小小声明

先弄个声明哈,*args和**kwargs这种写法不是必须的,只有前面的 * 才是必须的。当然你也可以写成*var和**vars,而写成*args和**kwargs是一个约定俗成的一个命名规范而已。

*args的用法

*args和**kwargs主要用于函数定义。功能是将不确定数量的参数传递给一个函数。

这里说说*args,它是用来发送一个非键值对的可变数量的参数列表给一个函数。

吃个栗子:

def test_var_args(f_arg, *args): print("first normal arg:", f_arg) for arg in args: print("another arg through *args:", arg) test_var_args('zero', 'one', 'two', 'three')
输出结果为:

first normal arg: one another arg through *args: one another arg through *args: two another arg through *args: three

懂了吧,咱们进行下一个**kwargs!

**kwargs的用法

上面的*args说的是非键值对,所以这里肯定就是键值对啦。如果你想要一个函数里传入带名字的参数,就可以用**kwargs。

 吃个栗子:

def test_var_kwargs(**kwargs): for key, value in kwargs.items(): print("{0} == {1}".format(key, value)) >>> test_var_kwargs(arg0="zero",arg1="one") arg0 == zero arg1 == one

简单吧。接下来我们谈谈如何使用*args和**kwargs来调用一个参数为列表或字典的函数!

使用*args和**kwargs来调用函数

假设你要实现这样的一个函数:

def test_args_kwargs(arg1, arg2, arg3): print("arg1:", arg1) print("arg2:", arg2) print("arg3:", arg3) 

你可以这样使用*args和**kwargs:

# 首先使用 *args >>> args = ("two", 3, 5) >>> test_args_kwargs(*args) arg1: two arg2: 3 arg3: 5 # 现在使用 **kwargs: >>> kwargs = {"arg3": 3, "arg2": "two", "arg1": 5} >>> test_args_kwargs(**kwargs) arg1: 5 arg2: two arg3: 3

*args和**kwargs的使用顺序

如果你想要使用所有的参数情况的话,他们的顺序是这样的:

some_func(fargs, *args, **kwargs)
*args是可变的positional arguments列表,**kwargs是可变的keyword arguments列表。并且,*args必须位于**kwargs之前,因为positional arguments必须位于keyword arguments之前。

原文发布时间为:2018-10-14

本文作者:zenRRan

本文来自云栖社区合作伙伴“深度学习自然语言处理”,了解相关信息可以关注“深度学习自然语言处理”。

原文链接:https://yq.aliyun.com/articles/652554
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章