8.1.3 在Python 中访问PyFrameObject 对象
尽管PyFrameObject 对象是一个用于Python 虚拟机实现的极为隐秘的内部对象,但是Python 还是提供了某种途径可以访问到PyFrameObject 对象。在Python 中,有一种frame object,它是对C 一级的PyFrameObject 的包装。而且,非常幸运的是,Python提供的一个方法能方便地获得当前处于活动状态的frame object。这个方法就是sysmodule 中的_getframe 方法。
下面的caller.py 演示了如何利用获得当前活动的frame object,进而获取调用当前函数的函数的信息:
[caller.py] |
[caller.py 的输出结果] |
从执行的结果可以看到,从函数f 中我们完全获得了其调用者——函数g 的一切信息,甚至包括函数g 的各个名字空间。
有兴趣的读者可能对sys._getframe 是如何实现的很感兴趣,下面我们就给出一个利用Python 的异常机制实现和sys._getframe 功能相同的代码。frame_getter.get_current_frame 的功能和sys._getframe 的功能完全一样。
[frame_getter.py] |
| 回书目 上一节 下一节 |
|
||||
| · 无线路由器故障处理 · 解析35岁技术人的价值.. · 无线重中之重:安全问题 · 无线局域网基本知识 · 家庭无线局域网 · 华为七千人主动辞职规.. · 微软出价446亿美元收购.. · 虚拟化的“赤壁之战” |
· Windows Server 2008专.. · 802.11n:下一代的无线.. · 脉冲无线电uwb专题 · AIX操作系统管理应用 · 云计算时代来临 · 求职必杀技 决战面试官 · 龙芯要做中国的“奔腾” · 2008年上半年IT技术图.. |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · 无线网状网(MESH) · Windows远程桌面应用 · C#技术开发指南 |
· Apache技术专题 · Windows集群服务应用 · C#技术开发指南 · 文档格式标准开战 OOXM.. · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 解析35岁技术人的价值.. |
|||