python - 从周围的框架中获取 locals()

标签 python python-decorators

我正在尝试将我的 Template(s).substitute("$a,$b", locals()) 替换为类似的简短内容

sub("$a,$b")

但是,我无权访问 sub() 内周围范围的局部变量,知道如何获取它们吗? 我发现的一个可能的解决方法是抛出异常,捕获它,然后沿着帧逐步查找前一帧,但也许有更简单的方法?

import traceback, sys, code
try:
  2/0
except Exception as e:
  type, value, tb = sys.exc_info()
  traceback.print_exc()
  last_frame = lambda tb=tb: last_frame(tb.tb_next) if tb.tb_next else tb
  frame = last_frame().tb_frame
  ns = dict(frame.f_globals)

最佳答案

尝试使用sys._current_frames()而不是引发异常。

可能的替代方案:sys._getframe() , inspect.currentframe() , inspect.stack()

我想不出比分析框架更好的解决方案。

关于python - 从周围的框架中获取 locals(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336572/

相关文章:

python - 如何将 python "libraries"添加到 Eclypse 和 pydev

python - 如何在 Flask 中缓存大型机器学习模型?

python - 返回与两个列表之间的最小距离关联的 id

python - PEP 8 和 Python 装饰器

Python:如何在单元( Nose )测试期间忽略装饰器?

python - 派生类的类/元类方法装饰器

python - 如何从 Flask @app.route 打印到 python 控制台

python - PySpark 将空字符串转换为 null 并写入 Parquet

python - 如何在 Sphinx 文档中将成员注释为抽象?

Python——函数装饰器导致函数被调用两次