Python 方法/函数参数以星号和双星号开头
我不太明白这些类型的函数是用在什么地方,它们的参数和普通参数有什么不同。我遇到过很多次,但从来没有机会好好理解它们。
比如:
def method(self, *links, **locks):
#some foo
#some bar
return
我知道我可以去查文档,但我不知道该查什么。
1 个回答
125
*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
就像一个字典,但你不需要明确地把一个 list
或者 dict
传给这个函数。
想要了解更多例子,可以查看 这个链接。