初识Python frame object
前言
Python有一类非常特殊的class名为frame有时称之为stack frame
怎么理解?stack frame字面上看有stack的含义,和函数逐级调用相关。
探究
通过代码演示
imoprt inspect
frame = inspect.currentframe()
此时frame就是一个frame object包含以下信息:
f_back调用这个函数的函数的framef_builtins该函数内置函数f_code该函数对应code object(类似字节码)f_globals该函数眼中的全局变量f_lastilast instruction类似汇编中program counter(函数执行到哪了下一步干嘛)f_lineno当前执行代码所在行数(给人看的)f_locals该函数眼中的局部变量f_tracetrace function允许每次执行一行代码(字节码)调用一个callback通常为None(可以用来实现debug)f_trace_lines控制trace function逐行triggerf_trace_opcodes控制trace function逐字节trigger
使用如此强大的frame就可以从任何一个局部调出全局信息。
参考
【python】python的骨架frame——你写的代码都是运行在它里面的?_哔哩哔哩_bilibili
inspect — Inspect live objects — Python 3.12.0a0 documentation

浙公网安备 33010602011771号