Python не может использовать ** вне определения функции - PullRequest
1 голос
/ 19 апреля 2019

Отказ от ответственности: я новичок в Python.

Если вы прочитаете эту статью , она перечислит ** как возможность распаковать словари.Я пробовал это.

  1. my_dict = {"key1": 1, "key2": {"inner_key": 3} }
  2. unpacked_dict = **my_dict

Возвращает: SyntaxError: invalid syntax

Что яотсутствует?Я знаю, что ** используется в основном с **kwargs, моя проблема в том, что ** может использоваться только в определении функции?

1 Ответ

3 голосов
/ 19 апреля 2019

Вы можете использовать его для распаковки в другие словари. Это не работает так, как я предполагаю, что вы пытаетесь это сделать, взяв из словарей внутренние словари и сделав их частью одного уровня. Из статьи, на которую вы ссылались:

Например, мы можем скопировать словарь, добавив в него новое значение:

>>> date_info = {'year': '2020', 'month': '01', 'day': '7'}
>>> event_info = {**date_info, 'group': "Python Meetup"}
>>> event_info
{'year': '2020', 'month': '01', 'day': '7', 'group': 'Python Meetup'}

Или скопировать / объединить словари, переопределяя определенные значения:

>>> event_info = {'year': '2020', 'month': '01', 'day': '7', 'group': 'Python Meetup'}
>>> new_info = {**event_info, 'day': "14"}
>>> new_info
{'year': '2020', 'month': '01', 'day': '14', 'group': 'Python Meetup'}

Это было добавлено в Python 3.5+, больше информации в PEP 448 .

...