【发布时间】:2026-01-17 06:45:01
【问题描述】:
Python 函数有一个代码对象__code__。
sys.settrace 跟踪 frame 有一个 f_code 代码对象。
对于那些作为函数的跟踪器调用,我如何获取函数对象(及其__annotation__ 成员)?
到目前为止,通过反复试验,我有:
if hasattr(frame.f_globals.get(frame.f_code.co_name),"__annotations__"):
这似乎适用于函数,但不适用于类成员函数;更糟糕的是,它会将类成员函数与同名的*函数混淆。
(我在 Python 3.2.3 (Xubuntu) 上。我看到 Python 3.3 inspect 模块有一个 signature 函数;这会返回代码对象的注释还是它也需要函数对象? )
【问题讨论】:
标签: python python-3.x