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

时间:2010-11-29 17:59:52

标签: python

我无法理解这些函数的使用位置以及这些参数与普通参数的不同之处。我遇到过很多次,但从未有机会理解它们。

例如:

def method(self, *links, **locks):
    #some foo
    #some bar
    return

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

1 个答案:

答案 0 :(得分:122)

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

def printlist(*args):
    for x in args:
        print(x)

我可以这样称呼它:

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

对于此

def printdict(**kwargs):
    print(repr(kwargs))

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

*args的行为类似于列表,**keywordargs的行为类似于字典,但您不必明确地将listdict传递给该函数。

有关更多示例,请参阅this