问题描述
当我编写脚本时,我有一个通用的个人函数库,我通过懒惰地导入整个东西来使用它。所以我想清理它,而不是导入数千行代码,我可以让脚本自动选择该特定脚本所需的函数并将它们复制到文件中以供发布。我使用 ast
和 inspect
的组合来实现这一点,但现在我想复制在我的模块中定义全局变量的确切代码行。
例如,如果我在脚本中使用快捷方式 eprint
,它应该刮掉以下行:eprint = Eprinter(verbose=1).eprint
来创建类方法的快捷方式。
我正在尝试采用我在这里找到的代码:https://stackoverflow.com/a/13230346/11343425
class GetAssignments(ast.NodeVisitor):
def visit_Name(self,node):
if isinstance(node.ctx,ast.Store):
if node.id == 'eprint':
print(node.id,node.lineno)
return node.lineno
code = inspect.getsource(printing)
a = GetAssignments()
b = a.visit(ast.parse(code))
print('b =',b)
这将很好地打印 node.lineno,但它返回 None,我不知道为什么。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)