目录
- 简介:
 - 案例1:全局无法使用局部变量。
 - 案例2:全局变量,任意范围均可使用。
 - 案例3:函数内定义的局部变量
 - 案例4:函数间global关键字的作用
 - 案例5:不同文件模块中的global,注意test6, test7为不同文件。
 - 案例6:不同文件模块中的global,注意test6, test7为不同文件。
 - 附:用global声明多个变量需要用逗号分
 - 结论:
 
简介:
1、global是Python中的全局变量关键字。
2、全局变量是编程术语中的一种,源自于变量之分。
3、变量分为局部与全局,局部变量又可称之为内部变量。
4、由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。
5、全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
6、global关键字的作用是可以使得一个局部变量为全局变量。
案例1:全局无法使用局部变量。
# -*- coding: utf-8 -*-
def test1():
    # 局部变量 local
    local_var = "a"
    print(local_var)
# 全局无法使用局部变量,只有对应的局部作用域可用
# print(local_var)  # NameError: name 'local_var' is not defined
案例2:全局变量,任意范围均可使用。
global_var = 1
def test2():
    # 函数内使用全局变量
    print(global_var + 1)
    def inner():
        # 嵌套函数内使用全局变量
        print(global_var + 2)
    return global_var + 3  # 返回值内使用全局变量
# 函数外使用全局变量。
print(global_var)
案例3:函数内定义的局部变量
def test3():
    # 函数内变量,但对于下级函数就是全局变量,对于外部来说就是局部变量
    func_var = 1
    def inner():
        print(func_var)
        return func_var
    return inner()
test3()
案例4:函数间global关键字的作用
def test4():
    # global关键字作用
    global func_var
    func_var = 2
    # 调用test5可以打印 func_var,去掉global会报错。
    test5()
    print(test5.__globals__)
def test5():
    print(func_var)
test4()
案例5:不同文件模块中的global,注意test6, test7为不同文件。
# a.py
def test6():
    # global关键字作用
    global func_var
    func_var = 3
    
# b.py
from a import test6
def test7():
    print(test6.__globals__["func_var"])
# 不先执行test6的情况下会抛出异常。KeyError: 'func_var'
test7()  # KeyError: 'func_var'
案例6:不同文件模块中的global,注意test6, test7为不同文件。
# a.py
def test6():
    # global关键字作用
    global func_var
    func_var = 4
    
# b.py
from a import test6
def test7():
    print(test6.__globals__["func_var"])
# 先执行test6的情况下,test可以使用 func_var
test6()
test7()  # 4
附:用global声明多个变量需要用逗号分
num = 0 def cc(): global count,num count = count+1 num = num+2 print(count,num) cc() 3 2 # 可以函数中的global声明能够修改全局变量 num Out[24]: 2 # count Out[25]: 3 在使用全局变量的场合,也可用类变量代替 class C: count = 3 def cc(): count = C.count+1 print(count) cc() 4
结论:
1、只导入包,global定义的全局变量没有被加到globals里面。
2、执行global所在的对应函数,global定义的函数内会存入对应变量,其他函数内则不会存入。
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)