【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

 

参考资料

1. pyhton关键字global

posted @ 2023-06-13 21:30  苏格拉底的落泪  阅读(93)  评论(0编辑  收藏  举报