Python作用域和命名空间
2014-04-28 15:44
423 查看
在介绍类之前,首先我想告诉你一些关于python作用域的规则。类的定义非常巧妙地运用了命名空间,你需要知道范围和命名空间的工作原理以能全面了解接下来发生的。 顺便说一下,关于这节讲到的知识对于任何优秀的python程序员非常有用。
让我们开始以一些定义开始。
命名空间(namespace)是一个从名称到对象的映射。大多命名空间目前用Python字典实现的,但那通常不会被注意(除非为了性能),在将来它可以改变。命名空间的例子是:内置名称的set(包含函数如abs()和内置异常名称);在模块中的全局变量名称;在函数调用时的局部名称。在一定程度上对象的属性赋值形成一个命名空间。掌握命名空间的重要事情是在不同的命名空间绝对没有关系。例如,两个不同的模块都可以不混淆的定义方法maximize。模块的用户必须用模块名称为前缀。
随便说一下,我习惯上吧每一个跟在点号(.)后面的属性都称为属性(attribute)。例如在表达式z.real。Real是对象z的一个属性。严格意义上讲,在模块中引用的名称都是属性的引用:在表达式modname.funcname,modname是一个模块对象和funcnam是它的一个属性。 在这个例子,这恰好是在于模块属性和在模块定义中的全局变量名称之间的一个简单的映射:它们共享同样的命名空间。
让我们开始以一些定义开始。
命名空间(namespace)是一个从名称到对象的映射。大多命名空间目前用Python字典实现的,但那通常不会被注意(除非为了性能),在将来它可以改变。命名空间的例子是:内置名称的set(包含函数如abs()和内置异常名称);在模块中的全局变量名称;在函数调用时的局部名称。在一定程度上对象的属性赋值形成一个命名空间。掌握命名空间的重要事情是在不同的命名空间绝对没有关系。例如,两个不同的模块都可以不混淆的定义方法maximize。模块的用户必须用模块名称为前缀。
随便说一下,我习惯上吧每一个跟在点号(.)后面的属性都称为属性(attribute)。例如在表达式z.real。Real是对象z的一个属性。严格意义上讲,在模块中引用的名称都是属性的引用:在表达式modname.funcname,modname是一个模块对象和funcnam是它的一个属性。 在这个例子,这恰好是在于模块属性和在模块定义中的全局变量名称之间的一个简单的映射:它们共享同样的命名空间。
相关文章推荐
- python的命名空间和作用域
- Python3.2官方文档翻译--作用域和命名空间实例
- Python3.2官方文档翻译--作用域和命名空间实例
- Python作用域和命名空间(Scope and Namespace)
- python中的命名空间和作用域
- python 命名空间和作用域
- Python命名空间和作用域
- python作用域与命名空间
- Python开发基础-Day6-函数参数、嵌套、返回值、对象、命名空间和作用域
- python基础6之命名空间与作用域
- 从Python的两种导入模块(from import和import)方式谈命名空间与作用域
- Python命名空间和作用域窥探
- python记录_day10 动态传参 命名空间 作用域
- Python进阶_关于命名空间与作用域(详解)
- Python基础-作用域和命名空间(Scope and Namespace)
- Python命名空间和作用域窥探
- Python中的命名空间、作用域以及locals() 和 globals()
- Python3.2官方文档翻译--作用域和命名空间
- Python的命名空间和作用域
- 【ZZ】python命名空间与作用域