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, которая не определена.