Python全局变量与局部变量详解与调用规则

2 下载量 171 浏览量 更新于2024-09-03 收藏 224KB PDF 举报
本文档深入讲解了Python中的全局变量和局部变量概念,以及它们在程序中的作用和行为。首先,作者通过一个简单的示例程序展示了全局变量(如变量a)和局部变量(如函数func和inner内的变量b和c)的区别。全局变量在整个模块范围内有效,无论在哪个函数或代码块中定义,都可以被访问。然而,局部变量只在其定义的作用域内可用,一旦离开该作用域,就无法直接访问。 理解作用域对于编程至关重要。在这个例子中,试图在函数内部访问局部变量b和c会导致错误,因为它们的作用范围仅限于各自所在的嵌套函数。同时,虽然func函数可以访问全局变量a,但由于c在inner函数内部,func并不能访问c。 接下来,文档介绍了Python的变量查找顺序,即LEGB规则:Local(局部)、Enclosing(外部)、Global(全局)和Built-in(内置)。这意味着当程序寻找变量时,会首先查找局部作用域,然后向上搜索外部作用域,再遍历全局作用域,最后才是内置命名空间。 关于修改全局变量的值,可以通过`global`关键字在函数内部明确声明变量为全局变量,这样就可以对其进行修改。相反,对于嵌套作用域的局部变量,如果想要在外部函数中访问,可以使用`nonlocal`关键字,但在使用前必须确保变量已在嵌套函数中声明为非局部。 最后,文档提到了Python中的名称空间分类,包括全局命名空间(存储模块级别的变量和函数)、局部命名空间(每个函数内的变量)以及内置命名空间(包含所有内置的Python函数和数据类型)。理解这些概念有助于程序员更好地组织和管理代码,避免因变量名冲突而产生的问题。