Python中的全局变量 - 非本地Python变量

184 阅读3分钟

在 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 关键字来改变局部变量的范围--我们将在下一节讨论这个问题。

global 关键字在 Python 中的用途是什么?

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

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

让我们看一下每种情况的一些例子,以帮助你更好地理解。

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

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

让我们试着改变一个全局变量的值,看看会发生什么:

x = 10 

def showX():
    x = x + 2
    print("The value of x is", x)
    
showX()
# local variable 'x' referenced before assignment

正如你在上面看到的,当我们试图在x 的值上加2时,我们得到了一个错误。这是因为我们只能访问但不能修改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 ,并在其初始值上添加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 有一个全局范围。

总结

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

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

我们还谈到了global 关键字,它可以让你修改一个全局变量的值,或者让一个局部变量在它的范围之外可以访问。

编码愉快!