tools.py 文件源码

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

项目:fatoptimizer 作者: vstinner 项目源码 文件源码
def _get_literal(node, constant_items=False):
    use_literal = (not constant_items)

    value = get_constant(node)
    if value is not UNSET:
        return value

    if isinstance(node, ast.Tuple) and use_literal:
        elts = _get_node_list(node.elts, literal=True)
        if elts is UNSET:
            return UNSET
        return list(elts)

    if isinstance(node, ast.List):
        elts = _get_node_list(node.elts, literal=use_literal)
        if elts is UNSET:
            return UNSET
        return list(elts)

    if isinstance(node, ast.Set):
        # elements must be hashable
        elts = _get_node_list(node.elts)
        if elts is UNSET:
            return UNSET
        return set(elts)

    if isinstance(node, ast.Dict):
        # FIXME: this code is slow, only do it when get_literal() is
        # called with types==dict (or dict in types)

        # keys musts be hashable
        keys = _get_node_list(node.keys)
        if keys is UNSET:
            return UNSET

        values = _get_node_list(node.values, literal=use_literal)
        if values  is UNSET:
            return UNSET

        return dict(zip(keys, values))

    return UNSET
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号