|
使用__name__获取当前函数名函数内和函数外都可以用__name__特殊属性。defget_fun_name_1():fun_name=get_fun_name_1.__name__print(fun_name)get_fun_name_1.__name__12345输出:get_fun_name_1使用sys模块获取当前运行的函数名sys._getframe()可以用来获取当前函数的句柄,返回FrameType对象classFrameTypepropertydeff_back(self)->FrameType|None:...@propertydeff_builtins(self)->dict[str,Any]:...@propertydeff_code(self)->CodeType:...@propertydeff_globals(self)->dict[str,Any]:...@propertydeff_lasti(self)->int:...#seediscussionin#6769:f_lineno*can*sometimesbeNone,#butyoushouldprobablyfileabugreportwithCPythonifyouencounteritbeingNoneinthewild.#An`int|None`annotationherecausestoomanyfalse-positiveerrors.@propertydeff_lineno(self)->int|Any:...@propertydeff_locals(self)->dict[str,Any]:...f_trace:Callable[[FrameType,str,Any],Any]|Nonef_trace_lines:boolf_trace_opcodes:bool----------------------------------------------------------------sys._getframe().f_code.co_filename#当前文件名,可以通过__file__获得sys._getframe(0).f_code.co_name#当前函数名sys._getframe(1).f_code.co_name #调用该函数的函数的名字,如果没有被调用,则返回,貌似callstack的栈低sys._getframe().f_lineno#当前行号123456789101112131415161718192021222324252627使用下面的代码获取函数的名称defget_fun_name_2():importsysfun_name=sys._getframe().f_code.co_nameprint(fun_name)1234输出:get_fun_name_2使用inspect模块获取当前运行的函数名inspect模块:https://docs.python.org/zh-cn/3.10/library/inspect.html#retrieving-source-codedefget_fun_name_3():importinspectfun_name=inspect.currentframe().f_code.co_nameprint(fun_name)1234输出:get_fun_name_3:::infoPS:inspect模块其实就是调用了sys._getframe()来获取的函数运行信息:::
|
|