您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

获取代码对象的Python函数

获取代码对象的Python函数

通过inspect.getframeinfo模块。我的意思是-在Python中没有做到这一点的直接方法- 多数情况下,您可以在没有功能的情况下掌握代码对象,而这只是通过帧自省。

Inspect的getframeinfo函数确实返回一些有关正在运行的框架的信息,然后您可以通过获取函数名称来检索该函数对象。

严格地说,这取决于实现,并且有一些缺点:

>>> import inspect
>>> def a():
...   return inspect.currentframe()
...

>>> inspect.getframeinfo(a())
Traceback(filename='<stdin>', lineno=2, function='a', code_context=None, index=None)
>>> b = inspect.getframeinfo(a())
>>> b.function
'a'

另一种方式(但仍取决于实现方式)是使用gc模块(垃圾收集器)获取对所述代码对象的引荐来源。

>>> import gc
>>> from types import FunctionType
>>> def a(): pass
... 
>>> code = a.__code__

>>> [obj for  obj in  gc.get_referrers(code) if isinstance(obj, FunctionType)  ][0]
<function a at 0x7f1ef4484500>
>>>

-这是针对Python 3的-对于Python 2,应替换__code__func_code

python 2022/1/1 18:48:27 有355人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶