大多数编程语言中,在函数外部声明的变量称为全局变量。您可以在函数内部和外部访问此类变量,因为它们具有全局范围,同样在 Python 中也是如此。

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

x = 10 

def showX():
    print("The value of x is", x)
    
showX()
# The value of x is 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()
# local variable 'x' referenced before assignment

正如您在上面看到的,当我们尝试将 的值加 2 时x,我们得到了一个错误。这是因为我们只能访问而不能修改x.

为了解决这个问题,我们可以使用global变量。类似下面这样:

x = 10 

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

使用global在函数内部声明全局变量x后,我们可以修改x它的初始值并将其添加 2。

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

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

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

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

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

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

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