Python 变量的基本作用域规则是什么?


变量根据其作用域分为全局变量和局部变量。全局变量和局部变量的主要区别在于,**全局变量**可以在整个程序中全局访问,而局部变量只能在其定义的函数或代码块内访问。

**局部变量**是在函数内部定义的变量,其作用域仅适用于该函数,这与在任何函数外部定义并具有全局作用域的全局变量相反。换句话说,我们可以说,尽管全局变量可以在整个程序和所有函数内部访问,但局部变量只能在其初始化的函数内访问。局部变量是在函数内创建的变量,并且是该函数独有的。它在任何地方都无法在函数外部访问。让我们检查一下局部变量的创建。

Python 中的局部变量

局部变量是一种特定类型的变量,当声明它的方法或语句块定义了该变量的作用域和范围时,可以使用它。foreach 语句将其用作迭代变量,特定 catch 子句将其用作异常变量,而 using 语句将其用作资源变量。

在声明它的方法或语句块中,它还可以用作其值不能更改的常量。语言集成查询 (LINQ) 返回匿名类型,可以使用隐式类型的局部变量来处理,其类型由编译器从其右侧的表达式推断得出。这允许为每个 LINQ 结果集创建自定义类型。

示例

让我们看一个创建局部变量的例子。

def f(): #local variable L = "Hello World" print(L) # Driver code f()

输出

输出如下所示。

Hello World

全局变量

只有在函数内为全局变量赋值或更改全局变量时,我们才需要使用 global 关键字。对于打印和访问,不需要 global。由于在 f() 内部对 s 进行了赋值,因此 Python“假设”我们想要一个局部变量,这就是第一句话抛出错误的原因。如果在函数内部修改或创建变量而没有将其定义为全局变量,则它被视为局部变量。

示例

以下是创建全局变量并访问它的示例。

pi = 3.142 radius = 8 def circle(): #radius is a global varible global radius radius = radius * 2 area_of_circle = pi * (radius) ** 2 print("The area of circle is: ", area_of_circle) circle()

输出

生成的输出如下所示。

The area of circle is:  804.352

封闭或非局部作用域

在嵌套函数中指定的变量称为非局部变量。它表示变量的作用域不能同时是局部作用域和全局作用域。nonlocal 关键字用于生成非局部变量。在下面的代码中,我们在外部函数中嵌套了内部函数()。Inner() 函数在 outer() 函数的作用域内定义。对在 inner() 函数中声明的非局部变量所做的更改反映在外部函数的输出中。

示例

以下示例演示了用法

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

输出

输出如下所示。

inner: nonlocal
outer: nonlocal

更新于: 2022年9月16日

400 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.