首页 > 解决方案 > Python中位置函数参数的默认值?

问题描述

我正在通过一些代码,我遇到了以下函数:

def foo(self, arg1=1, *, arg2=2):
    pass

我很惊讶地看到位置参数左侧的关键字*参数。然后我注意到我可以foo通过以下两种方式调用:

>>> foo(1)
>>> foo(arg1=1)

我想我会期望第二次调用失败,因为我foo通过提供关键字使用命名参数进行调用arg1

话虽如此,我是在两种情况下都使用位置参数,还是第二次调用foo命名参数?

标签: python

解决方案


我发现最能描述这一点的最好句子是:

这里的诀窍是要意识到“关键字参数”是调用站点的概念,而不是声明。但是“仅关键字参数”是声明的概念,而不是调用站点。

在这里找到它。


推荐阅读