在cPython 2.4中:
def f(a,b,c,d):
pass
>>> f(b=1,c=1,d=1)
TypeError: f() takes exactly 4 non-keyword arguments (0 given)
但是:
>>> f(a=1,b=1,c=1)
TypeError: f() takes exactly 4 non-keyword arguments (3 given)
显然,我不是非常理解Python的函数参数处理机制。 有人可以分享一些见解吗? 我知道正在发生什么(类似于填充参数槽,然后放弃),但我认为这会使新手困惑。
(此外,如果有更好的问题关键字-例如“内部机制”-请重新标记)