原文:Global Variable in Python – Non-Local Python Variables,作者:Ihechikara Vincent Abba

在 Python 和大多数编程语言中,在函数之外声明的变量被称为全局变量。你可以在函数内部和外部访问这些变量,因为它们具有全局范围。

下面是一个全局变量的例子:

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# x 的值是 10

上面代码中的变量 x 是在函数外部声明的:x = 10

使用 showX() 函数,我们仍然可以访问 x,因为它是在全局范围内声明的。

让我们看另一个例子,它展示了当我们在函数中声明一个变量并尝试在其他地方访问它时会发生什么。

def X():
    x = 10 

X()

def showX():
    print("The value of x is", x)
    
showX()
NameError: name 'x' is not defined

在上面的例子中,我们在一个函数中声明了 x,并试图在另一个函数中访问它。这导致了 NameError 因为 x 没有全局定义。

在函数内部定义的变量被称为局部变量。它们的值只能在声明它们的函数中使用。

你可以使用 global 关键字更改局部变量的范围——我们将在下一节中讨论。

Python 中使用的 global 关键字是什么

global 关键字主要用于两个原因:

  • 修改全局变量的值
  • 使局部变量在局部范围之外可访问

让我们看一下每个场景的一些示例,以帮助你更好地理解。

示例 #1 - 使用 global 关键字修改全局变量

我们在上一节中声明全局变量时,没有尝试更改变量的值。我们所做的只是在一个函数中访问并打印它的值。

让我们尝试更改全局变量的值,看看会发生什么:

x = 10 

def showX():
    x = x + 2
    print("The value of x is", x)
    
showX()
# 赋值前引用的局部变量 “x”

As you can see above, when we tried to add 2 to the value of x, we got an error. This is because we can only access but not modify x.

To fix that, we use the global variable. Here's how:

x = 10 

def showX():
    global x
    x = x + 2
    print("The value of x is", x)
    
showX()
# x 的值是 12

使用上面代码中的 global 关键字,我们能够修改 x 并给其初始值加上 2。

示例 #2 - 如何使用 global 关键字使局部变量在局部范围之外可访问

当我们在函数中创建变量时,不可能在另一个函数中使用它的值,因为编译器无法识别该变量。

以下是我们如何使用 global 关键字来解决这个问题:

def X():
    global x
    x = 10 
    
X()
    
def showX():
    print("The value of x is", x)
    
showX()
# x 的值是 10

为了使 x 可以在其本地范围之外访问,我们使用 global 关键字声明它:global x

之后,我们为 x 赋值。然后我们调用我们用来声明它的函数:X()

当我们调用 showX() 函数时,它打印在 X() 函数中声明的 x 的值,我们没有收到错误,因为 x 具有全局范围。

总结

在本文中,我们讨论了 Python 中的全局变量和局部变量。

这些示例展示了如何声明全局变量和局部变量。

我们还讨论了 global 关键字,它允许你修改全局变量的值或使局部变量可以在其范围之外被访问。

祝你编码愉快!