【python】global详解

在最外部声明函数,被视为全局变量。

a = 1

def func1():
	print(a) # 可引用全局变量a
    def func2():
        print(a) # 可引用全局变量a
    func2()
func1()
print(a) # 可引用全局变量a

注意:
1,最外部声明的变量,在函数内只可以对该变量进行引用,不可对该变量赋值,一旦执行赋值操作,则该变量视为局部变量,就会与外部变量冲突。

global
作用:
1,对局部变量声明为全局变量,一旦声明为全局变量,则该模块内任意地方都可以被引用。
一般用于函数这种局部区域内,且仅对当前函数区域内做赋值操作有效,不对内嵌在当前函数的子函数做赋值操作有效。
2,一旦对局部变量声明为全局变量,则该变量和外部变量视为引用同一个内存地址,也就是同一个变量。

以下是global对内嵌函数无效:

a = 1

def func1():
	global a
	a += 1
	print(a)
    def func2():
        a += 1 # 报错 UnboundLocalError: local variable 'a' referenced before assignment
        print(a)
    func2()
    print(func2.__globals__)

global对函数之间作用

def test4():
    # global关键字作用
    global func_var
    func_var = 2

    # 调用test5可以打印 func_var,去掉global会报错。
    test5()
    print(test5.__globals__)

def test5():
    print(func_var)

test4()

在函数test4声明了func_var为全局变量,函数test5也可以对func_var变量进行引用。(要注意,只能是引用,一旦在函数test5执行赋值操作,就会报错。)

总结:(关键字:global,全局变量,引用操作,赋值操作)
1,一旦global声明为全局变量,仅支持该模块下任意地方对该全局变量引用。
2,但是不支持对该变量作为全局变量来赋值操作。因为一旦赋值操作,就被重新视为局部变量,除非每一个地方都重新声明global为全局变量,就可以在任意地方进行赋值,但是没有这个必要,因为可以通过传参。

你可能感兴趣的:(python)