You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LibCST中获取全局变量的赋值内容?

获取LibCST中赋值语句的右侧值

你当前通过assignment.node拿到的是赋值相关节点,要提取MY_VAR = "my_val"里的"my_val",可以通过访问赋值节点的value属性,再针对字符串类型节点做值提取,修改代码如下:

with open(pipeline_file_path, "r") as f:
    src_tree: cst.Module = cst.parse_module(f.read())
    wrapper = cst.metadata.MetadataWrapper(src_tree)

    scopes = set(wrapper.resolve(cst.metadata.ScopeProvider).values())
    for scope in scopes:
        for assignment in scope.assignments:
            if isinstance(assignment, cst.metadata.Assignment):
                node = assignment.node
                # 判定是否为普通赋值语句节点
                if isinstance(node, cst.Assign):
                    # 获取等号右侧的表达式节点
                    right_expr = node.value
                    # 如果右侧是字符串常量,提取实际内容
                    if isinstance(right_expr, cst.SimpleString):
                        print(right_expr.value)  # 输出 "my_val"

补充说明

  • cst.Assign对应Python里普通的=赋值语句,它的value属性直接指向等号右侧的表达式节点。
  • 如果右侧是其他类型的常量(比如整数、布尔值),可以对应判断节点类型(如cst.Integer、cst.Name)后提取对应的值。

内容的提问来源于stack exchange,提问作者user3281392

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:04:54