Непонятное сообщение об ошибке из-за неправильного использования dict () - PullRequest
0 голосов
/ 18 июня 2019

Я только что наткнулся на конструкцию для d3, где первый параметр - это карта, а остальные - это распакованные ключи, значения.

>>> d1 = dict(a=1, b=2, c=3)
>>> d2 = dict(d=4, e=5)
>>> d3 = dict(d1, **d2)
>>> d3
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

Поэтому я решил посмотреть, что произойдет, если я уйдуоператор распаковки.

>>> d_bad = dict(d1, d2)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: dict expected at most 1 arguments, got 2

Моя первая мысль была о том, что dict () может принимать более одного аргумента, так почему именно эта ошибка?Во-вторых, я жаловался на более чем один аргумент карты конкретного типа, следовательно, TypeError.Но разве это не должно так говорить?На первый взгляд, текст сообщения об ошибке просто запутан или даже неверен.Или есть причина, почему это не может быть яснее?

1 Ответ

1 голос
/ 18 июня 2019

как описано в doc , это возможные аргументы:

class dict(**kwarg) 
class dict(mapping, **kwarg) 
class dict(iterable,**kwarg)

ваш последний случай не соответствует ни одному из них.

вы можете передавать именованные аргументы после первого mapping oder iterable;но не второе сопоставление или итерация.

, если сообщение об ошибке полностью учитывает эти параметры, является дискуссионным ...

...