Я только недавно начал изучать чудеса ** kwargs, но я столкнулся с камнем преткновения.Есть ли способ отправки ключевых слов словаря в функцию, которая не принимает аргументы ключевых слов?Рассмотрим следующую простую настройку:
def two(**kwargs):
return kwargs['second']
def three(**kwargs):
return kwargs['third']
parameterDict = {}
parameterDict['first'] = 1
parameterDict['second'] = 2
parameterDict['third'] = 3
Я использую некоторый внешний код, который взаимодействует в следующем стиле:
fitObject = externalCode(two, first=1, second=2)
Проблема в том, что «externalCode» не принимает ** kwargs,так есть ли умный способ получить информацию о словаре в приемлемой форме?
Кроме того, различные функции принимают в качестве параметров различные подмножества параметра Dict.Таким образом, функция «two» может принимать «первый» и «второй» параметры, она отклоняет «третий».И «три» принимает все три.
------------------------------------- РЕДАКТИРОВАТЬ -------------------------------------
Люди правильно прокомментировали, чтоприведенный выше код не потерпит неудачу - поэтому я разобрался в своей проблеме и не уверен, стоит ли делать репост или нет.Я делал что-то вроде этого:
def printHair(**kwargs):
if hairColor == 'Black':
print 'Yep!'
pass
personA = {'hairColor':'blue'}
printHair(**personA)
NameError: global name 'hairColor' is not defined
И, очевидно, исправление заключается в явном включении hairColor при определении: printHair (hairColor, ** kwargs) в первую очередь.