首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python / AST:如何根据规则集重命名所有变量

Python / AST:如何根据规则集重命名所有变量
EN

Stack Overflow用户
提问于 2019-05-13 21:08:47
回答 1查看 222关注 0票数 0

有没有工具能够迭代Python文件中的所有变量和函数参数,并根据样式规则替换它们?例如,给定myModule.py中的一个函数

代码语言:javascript
复制
def myFunc(Variable):
    Tmp = sin(Variable)
    return Tmp * 2

有没有可以像下面这样调用的工具?

> tool myModule.py --variable-begin-with-lowercase

来产生下面的结果?

代码语言:javascript
复制
def myFunc(variable):
    tmp = sin(variable)
    return tmp * 2

我认为,该工具应该对与现有变量冲突的重命名发出警告。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-19 03:33:41

您可以使用ast.NodeTransformer

代码语言:javascript
复制
import ast
class toLower(ast.NodeTransformer):
    def visit_arg(self, node):
       return ast.arg(**{**node.__dict__, 'arg':node.arg.lower()})
    def visit_Name(self, node):
       return ast.Name(**{**node.__dict__, 'id':node.id.lower()})

code = """
def myFunc(Variable):
   Tmp = sin(Variable)
   return Tmp * 2
"""
new_code = ast.unparse(toLower().visit(ast.parse(code)))
print(new_code)

输出:

代码语言:javascript
复制
def myFunc(variable):
   tmp = sin(variable)
   return tmp * 2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56113048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档