prune_assignments.py 文件源码

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

项目:peval 作者: fjarri 项目源码 文件源码
def remove_simple_assignments(node):
    """
    Remove one assigment of the form `<variable> = <variable>` at a time,
    touching only the top level statements of the block.
    """

    remaining_nodes = list(node.body)
    new_nodes = []

    while len(remaining_nodes) > 0:
        cur_node = remaining_nodes.pop(0)
        if type(cur_node) == ast.Assign:
            can_remove, dest_name, src_name = _can_remove_assignment(cur_node, remaining_nodes)
            if can_remove:
                remaining_nodes = replace_name(
                    remaining_nodes, ctx=dict(dest_name=dest_name, src_name=src_name))
            else:
                new_nodes.append(cur_node)
        else:
            new_nodes.append(cur_node)

    if len(new_nodes) == len(node.body):
        return node

    return replace_fields(node, body=new_nodes)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号