ZetCode

Python global 关键字

最后修改于 2025 年 2 月 25 日

Python 中的 global 关键字用于声明一个变量是全局变量。这允许您修改当前作用域之外的变量,通常是在函数内部。本教程涵盖了 global 关键字的用法、其作用域以及实际示例。

global 关键字用于指示一个变量是在全局作用域中定义的。没有 global 关键字,在函数内赋值的变量默认被视为局部变量。使用 global 关键字允许您在函数内部修改全局变量。

修改全局变量

此示例演示了如何使用 global 关键字在函数内部修改全局变量。

modify_global.py
x = 10

def modify_global():
    global x
    x = 20

modify_global()
print(x)  # Output: 20

global 关键字用于声明 x 是一个全局变量。modify_global 函数修改 x 的值,并且更改会全局反映出来。

访问全局变量

此示例演示了如何在函数内部访问全局变量而不修改它。

access_global.py
x = 10

def access_global():
    print(x)  # Accessing the global variable

access_global()  # Output: 10

access_global 函数访问全局变量 x 而不修改它。访问全局变量不需要 global 关键字。

局部变量与全局变量

此示例演示了局部变量和全局变量之间的区别。

local_vs_global.py
x = 10

def local_variable():
    x = 5  # Local variable
    print(f"Local x: {x}")

local_variable()
print(f"Global x: {x}")  # Output: Local x: 5, Global x: 10

local_variable 函数创建了一个局部变量 x,它不会影响全局变量 x。局部变量只能在函数内部访问。

在嵌套函数中使用 Global

此示例演示了如何在嵌套函数中使用 global 关键字。

nested_global.py
x = 10

def outer_function():
    x = 20  # Non-local variable

    def inner_function():
        global x
        x = 30

    inner_function()
    print(f"Outer x: {x}")  # Output: Outer x: 20

outer_function()
print(f"Global x: {x}")  # Output: Global x: 30

inner_function 中的 global 关键字修改了全局变量 x,而 outer_function 中的 x 仍然是非局部变量。

避免使用全局变量

此示例演示了如何通过将变量作为函数参数传递来避免使用全局变量。

avoid_global.py
def modify_variable(value):
    value = 20
    return value

x = 10
x = modify_variable(x)
print(x)  # Output: 20

没有使用 global 关键字,而是将变量 x 作为参数传递给 modify_variable 函数。这种方法避免了修改全局状态,并使代码更具模块化。

模块中的全局变量

此示例演示了全局变量如何在多个模块之间共享。

module_global.py
# module1.py
x = 10

# module2.py
import module1

def modify_global():
    global x
    x = 20

modify_global()
print(module1.x)  # Output: 20

全局变量 x 定义在 module1.py 中,并通过 global 关键字在 module2.py 中修改。更改会在两个模块中反映出来。

使用 Global 关键字的最佳实践

来源

Python global 关键字文档

在本文中,我们探讨了 Python global 关键字,并通过实际示例演示了其用法。

作者

我的名字是 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 Python 教程