Python inspect模块的问题
如何写一个程序来“识别函数调用的行号?”
Python的inspect模块提供了一些方法来找到行号,不过,
def di():
return inspect.currentframe().f_back.f_lineno
这段Python代码可以打印出当前的行号。
2 个回答
0
我发布了一个叫做 inspect 的工具的封装,使用简单的堆栈帧地址,只需要一个参数 spos
就可以覆盖堆栈帧:
例如,使用这个代码:
pysourceinfo.PySourceInfo.getCallerLinenumber(spos=1)
这里 spos=0
表示库函数,spos=1
表示调用这个函数的地方,spos=2
则是调用这个调用者的地方,依此类推。
3
为什么不使用 inspect.stack()
呢?
def get_caller_lineno():
frame, _, lineno, _, _, _ = inspect.stack()[1]
return lineno