Python获取行号的方法主要有三种:使用内置模块inspect
、通过sys
模块追踪异常,或利用traceback
提取调用栈信息。 这些方法适用于调试、日志记录或动态分析代码执行流程的场景,灵活选择可大幅提升开发效率。
-
inspect
模块
通过inspect.currentframe()
获取当前帧对象,再使用f_lineno
属性提取行号。例如:import inspect print(inspect.currentframe().f_lineno) # 输出当前行号
适用于实时获取执行位置,但频繁调用可能影响性能。
-
sys
模块与异常处理
结合sys.exc_info()
捕获异常时,可从中解析行号。例如:import sys try: 1/0 except: _, _, tb = sys.exc_info() print(tb.tb_lineno) # 输出异常发生行号
适合错误调试,但仅限异常触发时使用。
-
traceback
模块
通过traceback.extract_stack()
获取调用栈信息列表,最后一条记录即当前行号。例如:import traceback stack = traceback.extract_stack() print(stack[-1].lineno) # 输出调用栈末尾行号
适用于分析复杂调用链,但信息处理略繁琐。
根据需求选择合适方法:inspect
适合精准定位,sys
专注异常调试,traceback
擅长分析调用关系。合理使用这些工具能有效优化代码可维护性。