说明
使用inspect.stack()
可以获得一个数组,其中的每个元素分别是[0]本层、[1]上层、[2]上上层…的函数的信息,在日志中打印这些信息可以方便定位报错位置
每个元素中可以获取的常用属性如下(*除了这些还有其他属性,可自行输出查看):
属性名称 | 说明 |
---|---|
filename | 文件名 |
function | 函数名 |
lineno | 行号 |
示例
目录结构
test_import.py
定义了test_func函数,在其中获取inspect.stack,并打印当前级别[0]和上层[1]的调用信息
import inspect
def test_func():
stack_info=inspect.stack()
print("stack_info[0]:",stack_info[0].filename,stack_info[0].function,stack_info[0].lineno)
print("stack_info[1]:",stack_info[1].filename,stack_info[1].function,stack_info[1].lineno)
test_inspect.py
导入test_import,并在main函数中执行test_import.test_func函数
import test_import
def main():
test_import.test_func()
if __name__=="__main__":
main()
运行结果
可以看到:
[0]是本层的调用函数信息,文件是test_import.py,函数是test_func,行号4
[1]是上层调用函数信息,文件是test_inspect.py,函数是mian,行号5