[Python-Dev] TypeError: f() missing 1 required positional argument: 'x'

Mark Dickinson dickinsm at gmail.com
Thu Sep 20 14:59:16 CEST 2012


On Thu, Sep 20, 2012 at 1:21 PM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> +1 for using the unqualified "argument" in these error messages to
> mean "positional or keyword argument" (inspect.Parameter spells it out
> as POSITIONAL_OR_KEYWORD, but the full phrase is far too verbose for
> an error message).

Ah yes;  I see that 'positional or keyword' is a more accurate term
(but agree it's unwieldy for an error message).  I also see that I was
naive to think that the 'fix' is as simple as dropping the word
'positional':

    >>> def f(a, *, b):
    ...     pass
    ...
    >>> f()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: f() missing 1 required positional argument: 'a'

If the word 'positional' were dropped here, it would give the
incorrect impression that f only requires one argument.

Perhaps this simply isn't worth worrying about, especially since the
current error messages are all but certain to make it into the 3.3
release.

Mark


More information about the Python-Dev mailing list