一个定义于某模块中的函数的全局作用域是该模块的命名空间,而不是该函数的别名被定义或调用的位置
虽然作用域是静态定义的,在使用时作用域是动态的。在任何运行时刻,总是恰好有三个作用域在使用中(即恰好有三个名字空间是直接可访问的):最内层的作用域,最先被搜索,包含局部名字;中层的作用域,其次被搜索,包含当前模块的全局名字;最外层的作用域最后被搜索,包含内置名字。
一般情况下,局部作用域引用当前函数的局部名字,其中局部是源程序文本意义上来看的。在函数外部,局部作用域与全局作用域使用相同的名字空间:模块的名字空间。类定义在局部作用域中又增加了另一个名字空间。
一定要注意作用域是按照源程序中的文本位置确定的:模块中定义的函数的全局作用域是模块的名字空间,不管这个函数是从哪里调用或者以什么名字调用的。另一方面,对名字的搜索却是在程序运行中动态进行的,不过,Python语言的定义也在演变,将来可能发展到静态名字解析,在“编译”时,所以不要依赖于动态名字解析!(实际上,局部名字已经是静态确定的了)。
类作用域包括类定义作用域和类实现作用域. 类的成员具有类作用域. 私有成员和受保护成员只能被类内部的成员函数访问, 公有成员是类提供给外部的接口, 可以在类外部被访问. 这种技术实现了信息的隐藏和封装.
分享到:
相关推荐
JSP 九个内置对象及四个作用域 JSP(Java Server Pages)是一种基于Java的服务器端脚本...JSP四个作用域包括page、request、session和application四个作用域,分别对应着页面、请求、会话和应用程序四个级别的作用域。
变量按作用域分:分为全局变量和局部变量 全局变量:在所有函数外部定义的变量叫做全局变量 全局变量的使用范围:从定义位置开始到下面整个程序结束 局部变量:在一个函数内部定义的变量或者函数的形式参数统称为...
在函数内声明的变量具有函数作用域(function scope),属于局部变量 局部变量优先级高于全局变量 var name=one; function test(){ var name=two; console.log(name); //two } test(); 函数内省略var的,会影响...
JavaBean是一种特殊的Java类,遵循JavaBean架构规范,具有 getter 和 setter 方法,可以在JSP页面中使用useBean标签来实例化JavaBean对象,并通过scope属性指定JavaBean的作用域范围。下面将详细介绍JavaBean四个...
域本地组的权限作用范围限于其所在的域,但成员身份可以来自任何域,包括域内的全局组、通用组、其他域本地组以及单独的用户账户和联系人。这意味着你可以将来自不同域的用户和组加入到一个域本地组中,然后将这个组...
解决了问题之后突然想到在Fdream的blog看过一篇文章《JavaScript变量无块级作用域》,似乎这两个是差不多的,在VBScript中变量同样没有块级作用域。 再次去看了那篇文章之后我也做了下试验,得到结果:在VBScript中...
作用域决定了变量的可见性和生命周期,JavaScript有两种主要的作用域:全局作用域和局部作用域。局部作用域一般在函数内部声明,全局作用域在函数外部声明。此外,ES6引入了块级作用域,如`let`和`const`声明的变量...
TCP 协议和 UDP 协议的异同点 TCP 协议和 UDP 协议是两种常见的传输层协议,它们都是为了实现数据传输任务的,但它们之间存在着许多不同点。下面我们将对 TCP 协议和 UDP 协议的异同点进行详细的分析。 首先,TCP ...
4. **作用域和闭包**:掌握全局作用域、局部作用域、块级作用域以及闭包的概念和应用,了解变量提升和作用域链。 5. **事件和DOM操作**:学习如何处理用户交互事件,理解事件冒泡和事件委托,以及如何使用...
LMS算法和RLS算法是两种常用的自适应均衡算法,它们之间存在着一定的异同点。下面将对LMS算法和RLS算法进行详细的比较和分析。 一、LMS算法 LMS算法(Least Mean Square)是最小均方误差算法,它基于最小均方误差...
- **定义与作用**:变量用于存储数据。在JavaScript中,可以使用`var`、`let`或`const`关键字声明变量。 - **数据类型**:JavaScript中有多种数据类型,包括字符串、数字、布尔值、对象等。 #### 五、JavaScript的...
- 如果在当前域的类路径中找不到,会尝试在其他域或全局库中查找。 8. **热部署与类加载** WebLogic支持热部署,这意味着在不重启服务器的情况下更新应用。为实现这一功能,WebLogic使用了类卸载机制,当应用被...
例如,避免使用全局作用域来声明控制器,而是应该使用模块API来定义和组织代码。这不仅避免了全局变量可能引起的命名冲突和难以调试的问题,而且使得代码结构更清晰,更容易维护。 在学习和使用AngularJS的过程中,...
【简述C和C++的学习历程】 学习C和C++是一个逐步进阶的过程,适合希望成为熟练解决问题的程序员。肖舸老师的建议是首先从C语言入手,因为C语言能够帮助初学者建立基础的编程思维和解决问题的能力。C语言是面向过程...
77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class ...
闭包是一种特殊的作用域,使得函数可以访问并操作在其外部定义但未在全局作用域中的变量。这一特性使得闭包成为一种非常有用的工具,尤其是在实现某些设计模式时。 - **闭包的特点**: - 内部函数可以访问外部函数...
6. **作用域**:介绍全局作用域、局部作用域和块级作用域,以及如何使用`var`、`let`、`const`来声明变量。 7. **原型和原型链**:深入理解JavaScript的面向对象特性,包括对象的创建、原型对象、继承机制。 在...
简述防火墙的主要功能,如防止内部信息外泄,对网络存取进行监控审计。
人工智能的文本分类方法简述是指通过对文本内容的分析和处理来确定文本类别的过程,文本分类方法有很多种,例如决策树分类、贝叶斯分类、K-近邻分类、支持向量机分类等,每种方法都有其优点和缺陷,选择合适的分类...