python global变量作用域

python变量作用域

var1 = 123

def func():
      var1 = 456
      print(var1)

func()      #456
print(var1)    #123


==================================================
var1 = 123 def func(): global var1 #变成了教室的黑板(信息透明共享) var1 = 456 print(var1) func() #456 print(var1) #456
global var1     #表明此处没有起到全局变量的作用

def func():
      var1 = 456
      print(var1)

func()         #456
print(var1)    #NameError: name 'var1' is not defined
global var1    #表明此处没有起到全局变量的作用
var1 = 123

def func():

    var1 = 456
    print(var1)
    return var1

func()          #456
print(var1)     #123
var1 = 123    #这一行的全局变量也可以注释掉,不影响下面的代码

def func1():
      global var1     #变成了教室的黑板(信息透明共享)
      var1 = 456
      print(var1)
func1()       #456
print(var1)   #456


def func2():
    print(var1)
func2()      #456


def func3():
    var1 = 333
    print(var1)
func3()       #333
print(var1)   #456


def func4():
    global var1   #再次变成了教室的黑板(信息透明共享)
    print(var1)    #456
    var1 = 444
    print(var1)    #444
func4()       
print(var1)   #444

总结:

1,global必须放在函数内,如果放在函数外将不起作用(如上面的红色字体)。

2,某个函数如果想改变外部变量的值,就必须在函数内部的该变量前加global,如果有两个函数func1,func2都想改变外部变量var1的值,就必须在func1,func2里面的var1前加上global。

3,如果func2想获取func1里面的var1的最新值,就必须在func1,func2里面的var1前加上global。

原文地址:https://www.cnblogs.com/111testing/p/13905646.html