最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

[Python]函数⁽²⁴⁾|全局,局部,非局部变量

XAMPP案例 admin 671浏览 0评论

T24:全局,局部,非局部变量

在此篇教程中,你将了解 Python 函数中常用到的全局变量、局部变量、非局部变量以及在何处使用它们。

全局变量

在 Python 中,在函数外部或全局范围内声明的变量称为全局变量。这意味着可以在函数内部或外部访问全局变量。

让我们看一个如何在 Python 中创建全局变量的示例。

示例 1-创建一个全局变量

x = "global"

def foo():
    print("内部的 x:", x)

foo()
print("外部的 x:", x)

输出

内部的 x: global
外部的 x: global

在上面的代码中,我们创建了x作为全局变量,并定义了一个foo() 函数来打印全局变量x。最后,我们调用foo()它将打印x的值。

若在函数中改变x的值,则会报错!

x = "global"

def foo():
    x = x * 2
    print(x)

foo()

输出

UnboundLocalError: local variable 'x' referenced before assignment

输出并显示错误,因为 Python 将x视为局部变量,并且x也未在foo()中定义。

为了完成对x值的更改,我们可以使用 global 关键字进行声明。请参考下篇教程:Python 全局关键字 以了解更多信息。

局部变量

在函数体内或局部作用域中声明的变量称为局部变量

 示例 2-访问范围外的局部变量

def foo():
    y = "local"

foo()
print(y)

输出

NameError: name 'y' is not defined

输出并显示错误,因为程序中试图访问全局范围内的局部变量 y,而局部变量 y 仅在 foo() 或局部范围内有效。


让我们看一个关于如何在 Python 中创建局部变量的示例。

示例 3-创建一个局部变量

通常,我们在函数内部声明一个变量来创建一个局部变量。

def foo():
    y = "local"
    print(y)

foo()

输出

local

全局、局部变量

在这里,我们将展示如何在同一代码中使用全局变量局部变量

示例 4-在同一段代码里使用全局与局部变量

x = "global "

def foo():
    global x
    y = "local"
    x = x * 2
    print(x)
    print(y)

foo()

输出

global global 
local

在上面的代码中,我们在foo()中将x声明为全局变量,将y声明为局部变量。然后,我们使用乘法运算符*修改全局变量x并打印xy

调用 foo() 后,x 的值变为 global global 的,因为我们使用 x * 2 打印了两次 global。之后,我们打印局部变量 y 的值,即 local

示例 5-全局变量和局部变量同名

x = 5

def foo():
    x = 10
    print("local x:", x)

foo()
print("global x:", x)

输出

local x: 10
global x: 5

在上面的代码中,我们对全局变量和局部变量使用了相同的名称x。当我们打印相同的变量时,我们会得到不同的结果,因为变量在两个作用域中都被声明,即foo()内部的局部作用域和foo()外部的全局作用域。

当我们在 foo() 中打印变量时,它输出 local x: 10。这称为变量的局部作用域。

类似地,当我们在 foo() 之外打印变量时,它输出 global x: 5。这称为变量的全局作用域。

 非局部变量

非局部变量用于未定义局部作用域的嵌套函数中。这意味着变量既不能在局部作用域也不能在全局作用域中。

让我们看一个在 Python 中如何使用非局部变量的示例。使用 nonlocal 关键字来创建非局部变量

 示例 6-创建一个非局部变量

def outer():
    x = "local"

    def inner():
        nonlocal x
        x = "nonlocal"
        print("inner:", x)

    inner()
    print("outer:", x)

outer()

输出

inner: nonlocal
outer: nonlocal

在上面的代码中,有一个嵌套的 inner() 函数。我们使用 nonlocal 关键字来创建非局部变量inner() 函数定义在另一个函数 outer() 的范围内。

Note : 如果我们更改非局部变量的值,则更改会出现在局部变量中。

转载请注明:XAMPP中文组官网 » [Python]函数⁽²⁴⁾|全局,局部,非局部变量

您必须 登录 才能发表评论!