全局变量

在 Python 中,在函数外部或全局范围内声明的变量称为全局变量。这意味着可以在函数内部或外部访问全局变量。
让我们看一个如何在 Python 中创建全局变量的示例。

示例 1:创建全局变量

x = “global” def foo(): print(“x inside:”, x) foo() print(“x outside:”, x)
输出
x 内部:全局 x 外部:全球
在上面的代码中,我们创建了 X作为全局变量并定义 afoo()来打印全局变量X. 最后,我们调用foo()将打印的值X.
如果你想改变的值怎么办 X 在函数里面?

x = “global” def foo(): x = x 2 print(x) foo()
*输出

UnboundLocalError:赋值前引用了局部变量“x”
输出显示错误,因为 Python 处理 X 作为局部变量和 X里面也没有定义foo()。
为了使这项工作,我们使用global关键字。访问Python 全局关键字以了解更多信息。


局部变量

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

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

def foo(): y = “local” foo() print(y)
输出
NameError: 名称 ‘y’ 未定义
输出显示错误,因为我们正在尝试访问局部变量 是在全局范围内,而局部变量仅在内部foo()或局部范围内工作。


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

示例 3:创建局部变量

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

def foo(): y = “local” print(y) foo()
输出
当地的
让我们来看看前面的问题在哪里X 是一个全局变量,我们想修改 X里面foo()。


全局和局部变量

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

示例 4:在同一代码中使用全局和局部变量

x = “global “ def foo(): global x y = “local” x = x 2 print(x) print(y) foo()
输出
全球 全球 当地的
在上面的代码中,我们声明 X 作为全球和 是作为foo(). 然后,我们使用乘法运算符
来修改全局变量X 我们打印两个 X 和 是.
调用后foo(),值X变成了global global因为我们使用了x * 2来打印两次global。之后,我们打印局部变量的值是即local。


示例 5:同名的全局变量和局部变量

x = 5 def foo(): x = 10 print(“local x:”, x) foo() print(“global x:”, x)
输出
本地 x: 10 全局 x:5
在上面的代码中,我们使用了相同的名称 X对于全局变量和局部变量。当我们打印同一个变量时,我们得到不同的结果,因为该变量是在两个作用域中声明的,即局部作用域内foo()和全局作用域外foo()。
当我们打印里面的变量时,foo()它会输出local x: 10. 这称为变量的局部作用域。
类似地,当我们在 之外打印变量时foo(),它输出全局 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关键字来创建一个非局部变量。该inner()函数定义在另一个函数的范围内outer()。
注意:如果我们更改非局部变量的值,则更改会出现在局部变量中。