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

86 投票
1 回答
37191 浏览
提问于 2025-04-16 07:46

我不太明白这些类型的函数是用在什么地方,它们的参数和普通参数有什么不同。我遇到过很多次,但从来没有机会好好理解它们。

比如:

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 传给这个函数。

想要了解更多例子,可以查看 这个链接

撰写回答