*args和**kwargs在Python中的作用

Python部落组织翻译,禁止转载,欢迎转发。

Hi,伙计们。我发现Python新手们在理解*args和**kwargs这两个魔法变量时都有些困难。他们到底是什么?首先,我先告诉大家一个事实,完整地写*args和**kwargs是不必要的,我们可以只写*和**。你也可以写*var和**vars。写*args和**kwargs只是一个大家都遵守的习惯。那现在让我们从*args讲起。

*args的使用

*args和**kwargs通常使用在函数定义里。*args and **kwargs允许你给函数传不定数量的参数。“不定量”意味着你在定义函数的时候不知道调用者会传递几个参数进来。*args能够接收不定量的非关键字参数。下面这个例子能够说明这一点

code1.png

这个例子产生下面的结果

code2.png

这样应该就解释的比较清楚了,接下来我们来说明**kwargs

**kwargs的使用

**kwargs允许你传递不定量个关键字参数。如果你需要在函数中定义不定量个命名参数,那么你就要使用**kwargs了。下面是一个例子来演示这种用法:

code3.png

这个例子中我们处理了一些关键字参数。这是**kwargs的基本用法,可以看出**kwargs很有用。接下来让我们说明使用*args和**kwargs来在调用函数时,给函数传递“一个列表的参数”,或者“一个字典的参数”。

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

下面我们介绍如何使用*args和**kwargs来调用一个函数,假设你有这样一个函数。

code4.png

下面我们使用*args和**kwargs来给这个函数传递参数,我们可以这样做:

code5.png

*args和**kwargs以及普通参数的使用顺序

如果你想同时使用这三种参数,那么它们之间的顺序是

code6.png

到此为止*args和**kwargs的用法就讲完了,希望对你有所帮助


英文原文:https://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/

译者:诗书塞外