Python 模块中的变量作用域是如何工作的

Python模块中的变量作用域是如何工作的?

Python对象的作用域决定了它的可访问性。为了访问代码中特定的变量,必须指定作用域,因为它无法从程序中的任何位置访问。术语“作用域”描述了变量显示的精确编码区域。可以限制变量的可见性,以便只有特定的人可以看到它们。作用域确定哪些变量可以“看到”。

作用域确定规则并规定了变量可以被搜索的方式和位置。变量被搜索以赋值或检索值。命名空间为变量或过程提供了唯一的标识。命名空间详细说明了对象的名称以及Python解释器正在尝试访问的位置。

根据LEGB规则,命名空间的作用域分辨率是通过以下方式进行的。 E代表“嵌套”,G代表“全局”,B代表“内置”,而L代表“本地”。LEGB的顺序非常重要。首先,在局部搜索,然后在被封闭的搜索,然后在全局搜索,最后在内置搜索中搜索变量。

更多Python相关文章,请阅读:Python 教程

Python中有四个主要的作用域,即内置作用域、全局作用域、嵌套作用域、本地作用域。

本地作用域

在函数中定义的变量是具有本地作用域的变量。函数体包含对这些变量的定义。

示例

让我们使用一个例子来帮助你理解这个概念。在示例1中使用了一个变量num。Num = 0不是本地变量,因为它是在函数外定义的。根据我们的定义,局部变量是在函数体内声明的变量。在这里,局部变量num = 1被设置并在demo函数内打印。

num=0
def demo():
   #print(num)
   num=1
   print("The Number is:",num)
demo()

输出

生成的输出如下所示。

The Number is: 1

全局作用域

全局作用域变量是可以从程序的任何地方读取的变量。在代码内部和外部都可以访问这些变量。当我们打算在程序的其余部分中使用变量时,我们将变量声明为全局变量。

示例

上面的例子展示了如何在函数外声明一个称为str的变量。当调用函数demo时,将打印变量str的值。在函数内部使用全局变量时,不需要使用global关键字。

def demo():
   print(Str)
# Global
Str = "Hello World"
demo()

输出

生成的输出如下所示。

Hello World

嵌套或非本地作用域

在嵌套函数中指定的变量被称为非本地变量。这表示变量不能同时具有本地作用域和全局作用域。使用nonlocal关键字生成非本地变量。

示例

内部函数嵌套在以下代码中生成的外部函数中()。Inner()函数在outer()函数的作用域中定义。对在inner()函数中声明的非本地变量所做的更改反映在outer函数的输出中。

def Outer():
   x = "local"
   def Inner():
      nonlocal x
      x = "nonlocal"
      print("inner:", x)
   Inner()
   print("outer:", x)
Outer()

输出

输出如下。

inner: nonlocal
outer: nonlocal

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程