Обратите внимание, что те же dict не передаются в функцию. Создается новая копия, поэтому some_dict is not kwargs.
Ответ 2
Это не на 100% ясно из вашего вопроса, но если вы хотите передать dict через kwargs, вы просто сделаете так, чтобы он определил часть другого dict, например:
my_dict = {} #the dict you want to pass to func
kwargs = {'my_dict': my_dict } #the keyword argument container
func(**kwargs) #calling the function
def func(my_dict, **kwargs):
#reference my_dict directly from here
my_dict['new_key'] = 1234
Я использую последнее много, когда у меня есть тот же набор параметров, передаваемых различным функциям, но некоторые функции используют только некоторые параметры (я надеюсь, что это имеет смысл...).
Но есть, конечно, миллион способов сделать это. Если вы немного поработаете над своей проблемой, мы сможем помочь вам лучше.
Ответ 3
func(**mydict)
это будет означать kwargs = mydict внутри функции
все ключи mydict должны быть строками
Ответ 4
для python 3.6 просто поставьте ** перед именем словаря
def lol(**kwargs):
for i in kwargs:
print(i)
my_dict = {
"s": 1,
"a": 2,
"l": 3
}
lol(**my_dict)