我曾想过以某种方式将字典附加到本地作用域,但是我也看到了类似的问题 - 通常是用“不这样做!”的响应。我会说明我的问题,并欢迎任何解决此问题的建议。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中有多少项目?我建议明确的任务。 – 2015-01-21 11:34:41
处理这个问题的最简单方法是给子函数使用关键字参数,然后将字典解压到调用中(例如'def func(padding,** kwargs)'然后'func(** opt)'会使' padding'在'func'中本地可用,并将其他所有内容封装到'kwargs'中)。 – jonrsharpe 2015-01-21 11:36:15
@jonrsharpe - 美丽! – Joe 2015-01-21 11:42:11