以星号和双星号开头的python方法/函数参数

Python method/function arguments starting with asterisk and dual asterisk

本问题已经有最佳答案,请猛点这里访问。

我无法理解这些类型的函数在哪里使用,以及这些参数与正常参数的工作方式有多不同。我见过他们很多次,但从来没有机会正确理解他们。

前任:

1
2
3
4
def method(self, *links, **locks):
    #some foo
    #some bar
    return

我知道我可以搜索文档,但我不知道要搜索什么。


*args**keywordargs形式分别用于传递参数列表和参数字典。所以如果我有这样的功能:

1
2
3
def printlist(*args):
    for x in args:
        print(x)

我可以这样称呼它:

1
printlist(1, 2, 3, 4, 5)  # or as many more arguments as I'd like

为此

1
2
3
4
def printdict(**kwargs):
    print(repr(kwargs))

printdict(john=10, jill=12, david=15)

*args的行为类似于一个列表,**keywordargs的行为类似于一个字典,但您不必向函数显式传递listdict

请参阅此了解更多示例。