
通过
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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)