8.2.3.1 LGB 规则
最内嵌套作用域规则看上去很枯燥,所以我们从这一节开始,陆续给出一些例子,形象地看一看作用域规则如何影响Python 的行为。在Python 中,一个module 对应的源文件定义了一个作用域,这个称为global 作用域(对应global 名字空间);一个函数定义了一个local 作用域(对应于local 名字空间);Python 自身还定义了一个最顶层的作用域——builtin 作用域(对应于builtin 名字空间,在这里定义了Python 的builtin 函数,比如dir、open、range 等)。这3 个作用域在Python 2.2 之前就已经存在,所以那时Python 的作用域规则被称为LGB 规则:名字引用动作沿着local 作用域、global 作用域、builtin 作用域的顺序查找名字对应的约束。
还是考虑B.py 中的[3](见代码清单8-1),这里有一个对名字a 的引用动作,因此,Python 首先会在函数f 定义的作用域中(local 作用域)中查找名字a,如果找到当然是最好的。如果找不到, Python 就会在B.py 定义的作用域(global 作用域)中查找名字a,如果还是找不到,则会到Python 自身定义的builtin 作用域中查找。图8-4 显示了这个名字引用的过程:
|
| 图8-4 Python2.2 之前的LGB 作用域规则 |
| 回书目 上一节 下一节 |
|
||||
| · 无线路由器故障处理 · 解析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岁技术人的价值.. |
|||