python中查看函数帮助,python里如何调用函数
可以从任何代码对象(以及扩展模块/内置项)调用:从exec,execfile,从模块名称空间(导入期间),从类定义内,从方法/类方法/静态方法中,从修饰函数/方法,从嵌套函数中。-所以总的来说没有"召唤功能",而且很难用它做任何好事。在
堆栈帧及其代码对象是您可以获得并检查属性的最通用的。在
这个函数在很多情况下都可以找到调用函数:导入系统,检查
def get_calling_function():
在许多情况下找到调用函数。
fr=sys ._获取帧(1)# inspect。stack()[1][0]
co=fr.f _代码
为了进入(
:fr。全球公司[公司名称],
lambda:getattr(fr。f _ locals[ self ],co.co_name),
lambda:getattr(fr。f _ locals[ cls ],co.co_name),
:fr。f _ back。f _ locals[co . co _ name],# nested
:fr。f _ back。f _ locals[ func ],# decorators
:fr。f _ back。f _ locals[ meth ],
lambda:fr.f_back.f_locals[f],
):
尝试:
func=get()
except (KeyError,AttributeError):
及格
否则:
if func .__code__==co:
返回功能
引发AttributeError("找不到func”)
#用法
def f():
def nested_func():
打印获取调用函数()
打印获取调用函数()
nested_func()
Y类:
定义方法(自我,a,b=10,c=11):
打印获取调用函数()
Z类:
定义方法(自我):
打印获取调用函数()
z=Z()
方法()
返回z
@classmethod
定义clsmeth:
打印获取调用函数()
@静态方法
def staticmeth():
打印获取调用函数()
f()
y=Y()
z=y.meth(7)
方法()
y.clsmeth()
#会失败
它发现:
^{pr2}$
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。