我想把字典附加到本地范围,但是我也看到过类似的问题,通常回答是“不要这样做!”。我将说明我的问题,并欢迎任何建议来克服这一点。你知道吗
如果有一个options字典(从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几天]
好的,感谢@jornshapre的评论,我有以下解决方案
使用这种方法要付出的代价似乎是有点非传统的调用语法(尽管正如在评论中指出的那样,这对于像我这样的新手来说是不寻常的)。但是,这可以通过定义
或者另一个基于@Sven Marnach评论的解决方案
这有定义助手类的缺点,但有一个好处,就是通过
opt.
前缀的存在,可以清楚地知道哪些变量是用户可定义的选项。此外,调用语法是自然的。你知道吗在这两种情况下,未使用的用户选项存储为
kwargs
字典(在第一种情况下)或opt
字典中未使用的条目。你知道吗我个人决定选择第二种解决方案。你知道吗
相关问题 更多 >
编程相关推荐