【python】关键字global
正文
关键字global
Python 中的全局变量默认是可以在所有的函数内访问的,但是,如果在函数中定义了与全局变量同名的变量时,就会发生局部变量隐藏了全局变量的情形。如果局部变量隐藏了全局变量,那么当我们再次访问全局变量时,程序会报错,会说找不到该变量,因为,该全局变量被局部变量隐藏了。当局部变量与全局变量重名时,我们可以在函数内部使用 global 关键字来说明,我们在函数内部使用的是全局变量,而不是再次定义一个局部变量。
1.局部变量和全局变量重名:定义了一个全局变量 site,接着,我们定义了一个函数 func,同时,在函数 func 里面,我们首先打印变量 site 的值,接着再次给变量 site 赋值。最后,调用函数 func,此时程序报错,理论上我们在 func 函数里面第一次打印使用的应该是全局变量 site,但实际上程序却把 func 函数的第一次打印使用的变量定义为了局部变量。
site = "HaiCoder"
def func():
print("In Func Site =", site)
site = "haicoder"
func()
print("Global Site =", site)
输出:
Traceback (most recent call last):
File "demo01.py", line 8, in <module>
func()
File "demo01.py", line 5, in func
print("In Func Site =", site)
UnboundLocalError: local variable 'site' referenced before assignment
2. 局部变量和全局变量重名
site = "HaiCoder"
def func():
global site
print("In Func Site =", site)
site = "haicoder"
func()
print("Global Site =", site)
输出:
In Func Site = HaiCoder
Global Site = haicoder
3. 例子
x = 5
def func_a():
print(x)
def func_b():
print(x)
def func_c():
print(x)
func_a()
func_b()
func_c()
输出:
5
5
5
4 .例子
x = 5
def func_a():
print(x)
def func_b():
print(x)
def func_c():
x = x + 1
print(x)
func_a()
func_b()
func_c()
输出:
5
5
Traceback (most recent call last):
File "demo01.py", line 14, in <module>
func_c()
File "demo01.py", line 9, in func_c
x = x + 1
UnboundLocalError: local variable 'x' referenced before assignment
5. 例子
x = 5
def func_a():
print(x)
def func_b():
print(x)
def func_c():
global x
x = x + 1
print(x)
func_a()
func_b()
func_c()
输出:
5
5
6
参考资料
分类:
【03】python编程
标签:
【python编程】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现