在python中编写像help(args, kwds)这样的函数时,args和kwds是什么意思? &



我上网搜索,但无法得到一个明确的答案。它是否意味着参数和关键字?

根据这篇使用稍微不同的命名约定(kwargs而不是kwds),它们是

  • args -非关键字参数
  • kwargs -关键字参数

当我们不确定将有多少参数传递给函数时,我们使用*args**kwargs

:

*args将非关键字参数作为tuple传递。

**kwargs将作为dictionary传递关键字参数。

注意,你可以使用任何变量名来代替'args'和'kwargs'。例如:*myargs, **mykwargs

# To help you better visualize here is an example:
def test_func(*args,**kwargs):
print(args)
print(kwargs)

test_func(1,2,3,4, a=1,b=2,c=3)
# Output :
(1, 2, 3, 4)
{'a': 1, 'b': 2, 'c': 3}

在python(和其他一些语言)中,您可以使用这些特殊参数。如@Michalor所述,args用于非关键字参数,kwargs(或关键字args)用于基于关键字的参数。

这里有一个很好的例子,来自https://book.pythontips.com/en/latest/args_and_kwargs.html

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

#first with *args。在main或IDLE中执行以下代码:

args = ("two", 3, 5)
test_args_kwargs(*args)

将导致以下输出

arg1: two
arg2: 3
arg3: 5

现在与**kwargs:

在main或IDLE中执行以下代码:

kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
test_args_kwargs(**kwargs)

将导致以下输出:

arg1: 5
arg2: two
arg3: 3

正如你所看到的,你基本上可以用*args或**kwargs来调用任何函数,这将导致解释器自动将列表/字典输入到函数中。

*args导致一个列表一个接一个地输入,并且必须是为了让解释器正确地查找和匹配列表项与参数。

**kwargs使字典由关键字输入,这些关键字可能是无序的,但所有参数(没有默认值)都需要在给定的字典中,以避免程序失败。

编辑*:没有必要将字典/列表称为args或kwargs。你也可以调用你想要的list/dict,但是你需要用单星号来调用args-handling(例如*list)或者用双星号来调用kwargs-handling(例如**dict)

相关内容

  • 没有找到相关文章