最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

[Python]函数⁽²⁵⁾|全局关键字

XAMPP案例 admin 605浏览 0评论

T25:全局关键字

在此篇教程中,你将了解全局关键字、全局变量以及何时使用全局关键字。

在阅读本篇教程之前,请确保你已掌握此篇:[Python]函数⁽²⁴⁾|全局,局部,非局部变量 的一些基础知识

 何为全局关键字

在 Python 中,global 关键字允许你修改当前范围之外的变量。它用于创建全局变量,并在局部的上下文中对变量进行更改。

 全局关键字规则

Python 中 global 关键字的基本规则为:

  • 当在函数内部创建变量时,默认情况下它是局部的;
  • 当在函数外定义一个变量时,它默认是全局的。因此不必使用 global 关键字;
  • 使用 global 关键字,可在函数内部读/写全局变量;
  • 在函数外使用 global 关键字则无效。

 使用 global 关键字

示例 1-从函数内部访问全局变量

c = 1 # 全局变量

def add():
    print(c)

add()

输出

1

但是,我们可能在某些场景下,需要从函数内部修改全局变量,如示例 2。

 示例 2-从函数内部修改全局变量

c = 1 # 全局变量

def add():
    c = c + 2 # 将 c 增加 2
    print(c)

add()

当运行上面的程序时,输出并显示一个错误:

UnboundLocalError: local variable 'c' referenced before assignment

这是因为我们只能访问全局变量而不能从函数内部修改它。

对此的解决方案即:使用 global 关键字,如示例 3。

 示例 3-使用 global 从函数内部更改全局变量

c = 0 # 全局变量

def add():
    global c
    c = c + 2 # 将 c 增加 2
    print("add()函数内部c:", c)

add()
print("main函数内c:", c)

当运行上面的程序时,输出:

add()函数内部c: 2
main函数内c: 2

在上面的程序中,我们在add()函数中将c定义为全局关键字。

然后,我们将变量c增加2,即c = c + 2。之后,我们调用add()函数。最后,再打印全局变量c

可以看到,函数外的全局变量c也发生了变化,即c = 2

 跨 Python 模块的全局变量

在 Python 中,我们创建了一个模块 config.py 来保存全局变量并在同一程序中的 Python 模块之间共享信息。

以下是我们如何在 python 模块之间共享全局变量。

 示例 4-跨 Python 模块共享全局变量

创建一个 config.py 文件,用于存储全局变量

a = 0
b = "empty"

创建一个 update.py 文件,以更改全局变量

import config

config.a = 10
config.b = "TianTian"

创建一个 main.py 文件,以测试值的变化情况;

import config
import update

print(config.a)
print(config.b)

当我们运行 main.py 文件时,输出:

10
TianTian

在上面,我们创建了三个文件:config.pyupdate.pymain.py

模块 config.py 存储 ab 的全局变量。在 update.py 文件中,我们导入 config.py 模块并修改 ab 的值。同样,在 main.py 文件中,我们同时导入 config.pyupdate.py 模块。最后,打印并测试全局变量的值。

 嵌套函数中的全局变量

以下是如何在嵌套函数中使用全局变量。

 示例 5-在嵌套函数中使用全局变量

def foo():
    x = 20
    def bar():
        global x
        x = 25

    print("调用bar前: ", x)
    print("调用bar")
    bar()
    print("调用bar后: ", x)

foo()
print("main函数的x: ", x)

输出

调用bar前: 20
调用bar
调用bar后: 20
main函数的x: 25

在上面的程序中,我们在嵌套函数 bar() 中声明了一个全局变量。在 foo() 函数内部, x 没有受 global 关键字的影响。

在调用 bar() 前后,变量 x局部变量的值,即 x = 20。在 foo() 函数之外,变量 xbar() 函数中定义的值,即 x = 25。这是因为我们在 x 中使用 global 关键字在 bar() 函数(局部作用域)内创建了全局变量

如果在 bar() 函数内部进行任何值的更改,这些更改作用将出现在局部范围之外,即 foo()

转载请注明:XAMPP中文组官网 » [Python]函数⁽²⁵⁾|全局关键字

您必须 登录 才能发表评论!