python变量作用域、global关键字
python:变量作用域、global关键字
全局变量、局部变量
全局作用域:在函数外
局部作用域:在函数内部
num1 = 10 # 全局变量
# 全局作用域:在函数外部
def func():
# 局部作用域:在函数内部
num2 = 20 # 局部变量
sum1 = num1 + num2 # 在局部作用域中可以访问全局变量,而在全局作用域中无法访问局部变量
return sum1
全局变量的访问范围:全局变量即在全局作用域(函数的外部)中定义的变量
既可在全局作用域中访问,也可以在局部作用域中访问。
局部变量的访问范围:局部变量即在局部作用域(函数的内部)中定义的变量
局部变量只能在局部作用域中访问
扩展:内存垃圾回收机制
- 因为函数执行完毕之后,其内部的局部变量与程序都要被计算机的内存所回收!
- 又由于局部变量一般只在函数调用时使用,当函数调用结束,其变量就变得没有价值。所以计算机会自动执行清理操作,把局部变量占用的内存空间及时回收,所以导致,在全局作用域范围无法直接访问局部变量!
global关键字
在局部作用域中我们可以访问全局变量,但是不能实现对全局变量的修改和删除操作,如果需要在局部变量中实现对全局变量的删除与修改操作可以使用global关键词声明全局变量。
global关键词:声明全局变量,可以实现在局部作用域实现对全局变量的修改。
基本语法:
global 声明变量名
- 表示从当前行开始,以后使用的同名变量都是全局变量
# 定义一个全局变量
num = 10
def func():
# 在局部作用域中尝试修改全局变量
num = 100
func()
print(num) # 输出num = 10 并没有修改成功
- 在上述代码中,通过
num = 10
相当于在函数内部定义了一个同名的局部变量,所以num = 10
和num = 100
虽然同名了,但是两者一个是全局变量,一个是局部变量,两者相互隔离,不会产生任何影响。
# 定义一个全局变量
num = 10
def func():
# 在局部作用域中尝试修改全局变量
global num # 声明全局变量
num = 100
func()
print(num) # 输出num = 100 修改成功
- global关键字只是针对不可变数据类型的变量进行修改操作(数值、字符串、布尔类型和元组类型),可变类型不用使用global关键字。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现