欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-14 16:40:29
...

让我们开始看吧

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