打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
初识 Python: global 关键字 | Linux 中国
在 Python 中,global 关键字允许你修改当前范围之外的变量。它用于创建全局变量并在本地上下文中更改变量。
-- Programiz



致谢
编译自 | https://www.programiz.com/python-programming/global-keyword 
 作者 | Programiz
 译者 | MjSeven 🌟 🌟 🌟 共计翻译:28 篇 贡献时间:80 天

在读这篇文章之前,确保你对 Python 全局、本地和非本地变量[1] 有一定的基础。

global 关键字简介

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

global 关键字的规则

在 Python 中,有关 global 关键字基本规则如下:

◈ 当我们在一个函数中创建一个变量时,默认情况下它是本地变量。
◈ 当我们在一个函数之外定义一个变量时,默认情况下它是全局变量。你不必使用 global 关键字。
◈ 我们使用 global 关键字在一个函数中来读写全局变量。
◈ 在一个函数外使用 global 关键字没有效果。

使用 global 关键字(含示例)

我们来举个例子。

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

  1. c = 1 # 全局变量

  2. def add():

  3.    print(c)

  4. add()

运行程序,输出为:

  1. 1

但是我们可能有一些场景需要从函数内部修改全局变量。

示例 2:在函数内部修改全局变量

  1. c = 1 # 全局变量

  2. def add():

  3.    c = c + 2 # c 增加 2

  4.    print(c)

  5. add()

运行程序,输出显示错误:

  1. UnboundLocalError: local variable 'c' referenced before assignment

这是因为在函数中,我们只能访问全局变量但是不能修改它。

解决的办法是使用 global 关键字。

示例 3:使用 global 在函数中改变全局变量

  1. c = 0 # global variable

  2. def add():

  3.    global c

  4.    c = c + 2 # c 增加 2

  5.    print('Inside add():', c)

  6. add()

  7. print('In main:', c)

运行程序,输出为:

  1. Inside add(): 2

  2. In main: 2

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

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

正如我们所看到的,在函数外的全局变量也发生了变化,c = 2

Python 模块中的全局变量

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

以下是如何通过 Python 模块共享全局变量。

示例 4:在Python模块中共享全局变量

创建 config.py 文件来存储全局变量

  1. a = 0

  2. b = 'empty'

创建 update.py 文件来改变全局变量

  1. import config

  2. config.a = 10

  3. config.b = 'alphabet'

创建 main.py 文件来测试其值的变化

  1. import config

  2. import update

  3. print(config.a)

  4. print(config.b)

运行 main.py,输出为:

  1. 10

  2. alphabet

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

在 config.py 模块中保存了全局变量 a 和 b。在 update.py 文件中,我们导入了 config.py 模块并改变了 a 和 b 的值。同样,在 main.py 文件,我们导入了 config.py 和 update.py 模块。最后,我们打印并测试全局变量的值,无论它们是否被改变。

在嵌套函数中的全局变量

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

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

  1. def foo():

  2.    x = 20

  3.    def bar():

  4.         global x

  5.         x = 25

  6.    print('Before calling bar: ', x)

  7.    print('Calling bar now')

  8.    bar()

  9.    print('After calling bar: ', x)

  10. foo()

  11. print('x in main : ', x)

输出为:

  1. Before calling bar: 20

  2. Calling bar now

  3. After calling bar: 20

  4. x in main : 25

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

调用 bar() 之前和之后, 变量 x 取本地变量的值,即 x = 20。在 foo() 函数之外,变量 x 会取在函数 bar() 中的值,即 x = 25。这是因为在 bar() 中,我们对 x 使用 global 关键字创建了一个全局变量(本地范围)。

如果我们在 bar() 函数内进行了任何修改,那么这些修改就会出现在本地范围之外,即 foo()


via: https://www.programiz.com/python-programming/global-keyword

作者:programiz[3] 译者:MjSeven 校对:wxy

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python应用技巧 | 被忽视的global全局关键字
给妹子讲python-S01E18初探函数作用域
python中的全局变量(global关键字)
Python 全局变量的两种方法
Python的命名空间
python的名称空间和作用域
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服