一个定义于某模块中的函数的全局作用域是该模块的命名空间,而不是该函数的别名被定义或调用的位置
虽然作用域是静态定义的,在使用时作用域是动态的。在任何运行时刻,总是恰好有三个作用域在使用中(即恰好有三个名字空间是直接可访问的):最内层的作用域,最先被搜索,包含局部名字;中层的作用域,其次被搜索,包含当前模块的全局名字;最外层的作用域最后被搜索,包含内置名字。
一般情况下,局部作用域引用当前函数的局部名字,其中局部是源程序文本意义上来看的。在函数外部,局部作用域与全局作用域使用相同的名字空间:模块的名字空间。类定义在局部作用域中又增加了另一个名字空间。
一定要注意作用域是按照源程序中的文本位置确定的:模块中定义的函数的全局作用域是模块的名字空间,不管这个函数是从哪里调用或者以什么名字调用的。另一方面,对名字的搜索却是在程序运行中动态进行的,不过,Python语言的定义也在演变,将来可能发展到静态名字解析,在“编译”时,所以不要依赖于动态名字解析!(实际上,局部名字已经是静态确定的了)。
类作用域包括类定义作用域和类实现作用域. 类的成员具有类作用域. 私有成员和受保护成员只能被类内部的成员函数访问, 公有成员是类提供给外部的接口, 可以在类外部被访问. 这种技术实现了信息的隐藏和封装.
分享到:
相关推荐
- **作用域规则**:介绍 Python 中的作用域规则,包括局部作用域、全局作用域等。 - **命名空间概念**:解释命名空间的概念及其在作用域中的应用。 ##### 9.3 第一眼看类 (A First Look at Classes) - **类的定义*...
同一过程中用“Dim”定义的局部变量和用“Static”定义的局部变量具有相同的作用域。 #### 7. 显示详细文件信息 - **问题描述**:如何显示“我的电脑”中有关文档和文件夹目录的详细情况? - **知识点**:在“查看...
- **3.1.11 简述属性的特点及属性和方法的异同** - 属性在语法上类似于字段,但实际上是一个特殊的类成员,用于封装读取和设置字段的方法。属性可以模拟字段的行为,但提供了更多的灵活性和控制能力。 - **3.1.12 ...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
请说出作用域 public,private,protected,以及不写时的区别** - **public**:全局可见。 - **private**:仅当前类可见。 - **protected**:当前类、子类及同一包下的类可见。 - **不写**:默认(package-private...
25.请详述在dotnet中类(class)与结构(struct)的异同? 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户...