← index #3281Issue #1992
Off-topic · high · value 2.037
QUERY · ISSUE

Repeated keyword argument should cause SyntaxError, not TypeError

openby alex-robbinsopened 2017-08-22updated 2024-08-28
bug

CPython:

>>> def f(x): pass
... 
>>> f(x=1, x=1)
  File "<stdin>", line 1
SyntaxError: keyword argument repeated

MicroPython:

>>> def f(x): pass
... 
>>> f(x=1, x=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: function got multiple values for argument 'x'

Nitpicky? Yes. But I doubt fixing this would change code size, so...

See also #466. I would have submitted a patch instead of an issue, but it looks like that exception can be raised from two different places, and I don't know the difference.

Thanks,
Alex

CANDIDATE · ISSUE

unix: "function does not take keyword arguments" message can mislead

closedby peterhinchopened 2016-04-18updated 2017-03-22

If function kw arguments are supplied from a dict, and the dict (erroneously) contains unexpected arguments, the above error message is rather misleading.

d = {'argument' : 'A', 'bar' : 0}

def foo(*, bar=False):
    print('foo')
foo(**d)

Cpython produces the self-evident

>>> foo(**d)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() got an unexpected keyword argument 'argument'
>>> 

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied