Python全局变量global关键字详解

栗子
栗子
发布时间:2026-10-11| 3人浏览过
原创

本文详细解析Python中全局变量与局部变量的作用域差异,以及global关键字在修改全局变量时的具体应用。通过字符串和列表的对比示例,阐明何时必须使用global关键字,帮助开发者避免变量作用域错误。

Python中的变量作用域

在Python编程中,理解变量的作用域是编写健壮代码的基础。变量根据其定义位置的不同,主要分为全局变量和局部变量,它们的使用范围和优先级遵循特定的规则:

  • 全局变量:在函数体外定义的变量,可以在程序的所有作用域中被访问。
  • 局部变量:在函数内部定义的变量,仅在该函数内部有效。
  • 访问优先级:当局部变量与全局变量同名时,局部变量优先于全局变量。
  • global关键字:用于在函数内部声明一个变量为全局变量,从而允许修改全局变量的值。

字符串与数字类型的global使用

对于不可变类型(如字符串和数字),如果在函数内部直接赋值,Python会将其视为创建一个新的局部变量。若要修改全局的字符串或数字变量,必须使用 global 关键字进行声明。

str = 'global'
def func1():
  str = 'local'
  print(str)
func1()
print(str)

上述代码中,func1 内部直接赋值 str = 'local',这创建了一个局部变量 str,而不会修改全局变量。因此,函数外部的 print(str) 依然输出 'global'。

str = 'global'
def func1():
  print(str)
func1()
print(str)

如果在函数内部仅读取全局变量 str 的值(如 print(str)),无需使用 global 关键字,Python 会自动在全局作用域中查找该变量。

str = 'global'
def func1():
  global str
  str = 'local'
  print(str)
func1()
print(str)

当需要在函数内部修改全局字符串变量时,必须使用 global str 声明。这样,str = 'local' 才会真正修改全局变量 str 的值。

列表与字典的global使用

对于可变类型(如列表和字典),情况有所不同。在函数内部对列表或字典进行原地修改(如 append、pop 等方法)时,不需要使用 global 关键字,因为这些操作修改的是对象本身,而不是重新绑定变量名。

list = ['global', 'jb51.net']
def func1():
  list.append('www.jb51.net')
  print(list)
func1()
print(list)

上述代码中,list.append('www.jb51.net') 直接修改了全局列表对象,因此函数内外的列表内容一致,无需 global 声明。

list = ['global', 'jb51.net']
def func1():
  list = ['docs.jb51.net']
  print(list)
func1()
print(list)

然而,如果在函数内部对列表进行重新赋值(如 list = ['docs.jb51.net']),Python 会创建一个新的局部列表对象,而不会修改全局列表。此时,函数外部的全局列表保持不变。

list = ['global', 'jb51.net']
def func1():
  global list
  list = 'docs.jb51.net'
  print(list)
func1()
print(list)

若要在函数内部通过重新赋值来修改全局列表变量,必须使用 global list 声明。这样,list = 'docs.jb51.net' 才会真正修改全局变量 list 的引用。

总结

掌握Python中全局变量与局部变量的作用域差异,以及global关键字在修改全局变量时的具体应用,对于编写高效、可维护的代码至关重要。通过合理运用global关键字,可以有效避免变量作用域错误,提升代码的健壮性和可读性。

以上就是Python全局变量global关键字详解的详细内容,更多关于Python全局变量的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。