Я думал о прикреплении словаря к локальному пространству как-то, однако я видел похожие вопросы, заданные на SO - обычно с ответом «не делай этого!». Я проиллюстрирую свою проблему и приветствую любые предложения по ее преодолению.Python удобная передача аргументов слова для функции
Если у вас есть словарь параметров (читайте у JSON, поэтому предпочитайте, чтобы вам не приходилось возиться с ним), и я решил передать это следующим образом;
def testParse(dataObj, userOptions):
# Merge default with passed options taking prescidence
defaultOpts = {
'boxheight' : 200,
'boxwidth' : 100,
'padding' : 150
}
opt = dict(userOptions.items() | defaultOpts.items())
Вопрос в том, Есть ли способ, чтобы прикрепить каждое значение в словаре локальной области видимости с помощью ключа так, что вместо выписывал весь словарь
boxheight = opt['boxheight']
и т.д., или писать opt['boxheight']
каждый раз, когда я обращаюсь к нему. Можно ли просто закодировать словарь opt
и присвоить значение программно?
Я никоим образом не привязан к описанному подходу, но все варианты будут использоваться в локальных выражениях в какой-то момент, и они существуют с самого начала в качестве словаря. Большое спасибо заранее за ваши предложения.
[Отказ от ответственности: только работает с Python в течение нескольких дней]
Нет, для локальных переменных нет способа сделать это. Сколько предметов есть в dicitonary? Я предлагаю явные задания. –
Самый простой способ справиться с этим - использовать аргументы ключевого слова для подфункций, а затем просто распаковать словарь в вызов (например, 'def func (padding, ** kwargs)' then' func (** opt) 'будет делать' padding', доступный локально в 'func', и упаковывает все остальное в' kwargs'). – jonrsharpe
@jonrsharpe - красивый! – Joe