criteria.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:beval 作者: hyw208 项目源码 文件源码
def visit_Call(self, node):
        fields = {k: v for k, v in ast.iter_fields(node) if v}

        self.visit(fields[Const.func])
        name, args, kwargs = self.data.pop(), list(), collections.OrderedDict()

        func = SyntaxAstCallExtender.find_deserializer(name)
        if not func:
            raise SyntaxError("%s is not supported" % name)

        if Const.args in fields:
            for arg in fields[Const.args]:
                self.visit(arg)
                args.append(self.data.pop())

        if Const.keywords in fields:
            for keyword in fields[Const.keywords]:
                (_, key), (_, value) = ast.iter_fields(keyword)
                self.visit(value)
                kwargs[key] = self.data.pop()

        if Const.kwargs in fields:
            (_, knodes), (_, vnodes) = ast.iter_fields(fields[Const.kwargs])
            for knode, vnode in zip(knodes, vnodes):
                self.visit(knode)
                key = self.data.pop()
                self.visit(vnode)
                value = self.data.pop()
                kwargs[key] = value

        obj = func(*args, **kwargs)
        self.data.append(obj)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号