让我们开始看吧
def read_config(ctx, param, value):
if not value:
return {}
import json
def underline_dict(d):
if not isinstance(d, dict):
return d
return dict((k.replace('-', '_'), underline_dict(v)) for k, v in six.iteritems(d))
config = underline_dict(json.load(value))
ctx.default_map = config
return config
知识点
dict()
可以把列表,表达式,等等转意成词典。看下面的代码
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}
这个方法里面套用了另一个方法,写在一起可能因为里面的方法仅仅被调用一次。
一行行解释
config = underline_dict(json.load(value)) #这里调用underline_dict(d)函数
underline_dict(d)的功能是替换词典key中的_为-,并且返回这个词典。
ctx.default_map = config
ctx是什么东西不知道,以后再看