TypeError: f() 需要至少 1 个参数(给定 1 个)-这是 python 中的错误吗?

Ell*_*ski 3 python python-2.7

使用 python 2.7.6 64 位我输入:

>>> def f(a, b=5):
...    pass
...
>>> f(b=3)
Run Code Online (Sandbox Code Playgroud)

然后我得到:

TypeError: f() takes at least 1 argument (1 given)
Run Code Online (Sandbox Code Playgroud)

当然我应该得到一些错误,因为我没有给参数赋值a。但是我得到的错误消息并不意味着什么(1 至少是 1)。

这是一个错误,对吧?修好了吗?我找不到任何关于它的信息。

谢谢!

log*_*gic 5

不,这不是错误。

要显示这一点,您可以仅使用a值运行该函数:

def f(a, b=5):
    print b

a=1
f(a)
Run Code Online (Sandbox Code Playgroud)

输出:

>>> 
5
Run Code Online (Sandbox Code Playgroud)

如您所见,程序打印出的值为b5。您甚至不必传入b函数,因为它已由函数本身定义。

如果你f(b=3)像你一样传递,你会得到一个错误,要求你输入a变量,因为它还没有在任何地方定义。

TypeError: f() takes at least 1 argument (1 given) #You've given 1 value (b=3), but 1 argument ("a" value) is still needed
Run Code Online (Sandbox Code Playgroud)

这就是为什么如果你运行:

>>> f(a=3)
5
Run Code Online (Sandbox Code Playgroud)

您不会收到任何错误,因为该a值已成功传递到函数中。


编辑:

进一步分解:

  • a并且b是参数

当它说时f() takes at least 1 argument,这意味着该函数f() 只能在传递给它的一个参数的情况下使用。但那个单一的论点必须是 a.

你所做的就是传递b=3给它。b也一个参数(为什么它说,这就是(1 given)你的错误),但它不是“要求”的说法。

  • 谢谢,但我知道应该有错误。正如我所说:“我当然应该得到一些错误......” (2认同)