Python **kargs Нужен фильтр аргументов

Неизвестно, какие аргументы придут, поэтому надо написать фильтрующее условие, что-то типа такого:

def func(**kargs):
    if x in kargs.keys():   # NameError: name 'x' is not defined
        print(kargs[x])

func(n=4, x='aaa', a=22)

Ответы (1 шт):

Автор решения: mrgervant

Нужно x заключить в кавычки:

def func(**kwargs):
    if 'x' in kwargs.keys():
        print(kwargs['x'])

func(n=4, x='aaa', a=22)

Когда Вы передаете в функцию аргументы через x='aaa', то x рассматривается как string (как и другие ключи словаря n, a). Документации не нашел, но есть обсуждение здесь.

Через заключение в кавычки Вы корректно обращаетесь по ключу словаря. Иначе (без '') функция пытается найти переменную x, которая не определена.

→ Ссылка