Подтвердить что ты не робот

Как отправить словарь в функцию, которая принимает ** kwargs?

У меня есть функция, которая принимает параметры ключевого слова:

def func(**kargs):
    doA
    doB

Как мне отправить словарь?

4b9b3361

Ответ 1

Просто используйте func(**some_dict) для его вызова.

Это описано в в разделе 4.7.4 учебника python.

Обратите внимание, что те же 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

Затем вы можете поймать my_dict в функции:

def func(**kwargs):
    my_dict = kwargs.get('my_dict')

или...

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)