#python #keyword-argument
#python #ключевое слово-аргумент
Вопрос:
Отказ от ответственности: я новичок в Python.
Если вы читаете эту статью, в ней указано **
, что она может распаковывать словари. Я пробовал это.
my_dict = {"key1": 1, "key2": {"inner_key": 3} }
unpacked_dict = **my_dict
ВОЗВРАТ: SyntaxError: invalid syntax
Чего мне не хватает? Я знаю **
, что используется в основном с **kwargs
, моя проблема, которая **
может использоваться только в определении функции?
Комментарии:
1. Чего вы ожидали
unpacked_dict
?2. Цель
**
состоит в том, чтобы перевести dict в kwargs функции, что имеет смысл только в контексте вызова функции.3. Это неверно в Python 3.5 : python.org/dev/peps/pep-0448
Ответ №1:
Вы можете использовать его для распаковки в другие словари. Это не работает так, как я предполагаю, что вы пытаетесь это сделать, что берется из внутренних словарей значений и делает их частью одного уровня. Из статьи, на которую вы ссылались:
Например, мы можем скопировать словарь, добавив в него новое значение:
>>> 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.
Комментарии:
1. Спасибо @GiraffeMan91 за полный ответ, объясняющий обоснование и приводящий пример. Теперь это имеет смысл. Приветствия!