astモジュールを使ってあるモジュールの変数名を抜き出す。
NodeTransformerというvisitorが用意されているのでこれを使うのが一番楽
import ast import inspect class CollectVarname(ast.NodeTransformer): def __init__(self): self.r = set() def visit_Name(self, node): self.r.add(node.id) def collect_varname(node): visitor = CollectVarname() visitor.visit(node) return list(visitor.r) def collect_varname_from_module(m): with open(inspect.getsourcefile(m)) as rf: m = ast.parse(rf.read()) return (collect_varname(m)) if __name__ == "__main__": import sys print(collect_varname_from_module(sys.modules[__name__])) # ['node', 'set', 'collect_varname_from_module', 'ast', 'collect_varname', 'visitor', 'self', 'inspect', 'list', 'm', 'sys', 'rf', '__name__', 'open', 'CollectVarname']