pyspider源代码-run.py之read_config函数

让我们开始看吧

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是什么东西不知道,以后再看

你可能感兴趣的:(pyspider源代码-run.py之read_config函数)