获取代码对象的Python函数

获取代码对象的Python函数,第1张

获取代码对象的Python函数

通过

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

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

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

>>> import inspect>>> def a():...   return inspect.currentframe()...>>> inspect.getframeinfo(a())Traceback(filename='<stdin>', lineno=2, function='a', pre_context=None, index=None)>>> b = inspect.getframeinfo(a())>>> b.function'a'

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

>>> import gc>>> from types import FunctionType>>> def a(): pass... >>> pre = a.__pre__>>> [obj for  obj in  gc.get_referrers(pre) if isinstance(obj, FunctionType)  ][0]<function a at 0x7f1ef4484500>>>>

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

__pre__
func_pre



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5617891.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存