解释 python 中的 args 和 kwargs
嘿,大家好呀。我发现,大多数的 Python 新手程序员很难搞清楚 *args
和 **kwargs
魔术变量。所以,它们是什么呢?首先,让我告诉你,写 *args
或者 **kwargs
并不是必须的。只有 *
(星号)是必须的。你也可以写成 *var
和 **vars
。写成 *args
和 **kwargs
仅仅是一个惯例。所以,让我们先来看看 *args
。
*args
的使用
*args
和 **kwargs
最常用于函数定义。 *args
和 **kwargs
允许你传递数量不定的参数给一个函数。这里的变量的意思是,你事先不知道用户会传递多少个变量给你的函数,因此,在这种情况下,你使用这两个关键字。 *args
是用来发送一个 非关键字 可变长度的变量列表给函数。这里是一个例子,以助你弄明白:
def test_var_args(f_arg, *argv):
print "first normal arg:", f_arg
for arg in argv:
print "another arg through *argv :", arg
test_var_args('yasoob','python','eggs','test')
这生成以下结果:
first normal arg: yasoob
another arg through *argv : python
another arg through *argv : eggs
another arg through *argv : test
我希望这解开了你的困惑。现在,让我们谈谈 **kwargs
**kwargs
的使用
**kwargs
运行你传递 关键字 可变长度参数给函数。如果你想要处理函数中的 命名参数 ,那么你应该使用 **kwargs
。下面是一个例子,以帮助理解它:
def greet_me(**kwargs):
if kwargs is not None:
for key, value in kwargs.iteritems():
print "%s == %s" %(key,value)
>>> greet_me(name="yasoob")
name == yasoob
所以,你可以看到我们是如何在函数中处理一个关键字参数列表的。这仅仅是 **kwargs
的基础知识,而你可以看到它多有用。现在,让我们聊聊你可以如何使用 *args
和 **kwargs
,利用一个参数列表或者参数字典来调用一个函数。
使用 *args
和 **kwargs
来调用一个函数
所以在这里,我们会看到如何使用 *args
和 **kwargs
来调用一个函数。试想,你有这么一个小函数:
def test_args_kwargs(arg1, arg2, arg3):
print "arg1:", arg1
print "arg2:", arg2
print "arg3:", arg3
现在,你可以使用 *args
或者 **kwargs
来传递参数给这个小函数。以下是如何做到这点:
# first with *args
>>> args = ("two", 3,5)
>>> test_args_kwargs(*args)
arg1: two
arg2: 3
arg3: 5
# now with **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
和 **kwargs
的使用。如果你对其有任何疑问或困惑,那么请随意在下面留言。要进一步研究,我推荐官方的 关于定义函数的 python 文档 ,以及 stackoverflow 上的 *args
和 **kwargs
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: Python 词汇表 / 关键字
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论