找回密码
 会员注册
查看: 27|回复: 0

Python]获取当前函数名的三种方法

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
70607
发表于 2024-9-5 17:57:05 | 显示全部楼层 |阅读模式
使用__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()来获取的函数运行信息:::
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 12:38 , Processed in 1.248761 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表