Python 全局变量 global
Python 全局变量
局部变量就是定义在一个函数体内部的变量
全局变量是定义在外面的变量
a = 1 # 全局变量是定义在函数、类外面的变量 def f(): b = 2 # 局部变量 print(a) # 全局变量
引用全局变量
a = 1 # 全局变量a 是定义在函数、类外面的变量 print("line 2",id(a)) def f(): b = a # # 全局变量 a print("in f() ",id(a)) f()
输出结果:
line 2 140719972816656
in f() 140719972816656
修改全局变量的值
下面的代码,在f()中修改a,此时a为新的同名变量,是一个局部变量
a = 100000 # 全局变量a 是定义在函数、类外面的变量 print("line 2",a,id(a)) def f(): a = 200000 # # 全局变量 a ? 还是局部变量 a? print("in f() ",a,id(a)) f() print("in f() ",a,id(a))
输出结果:
line 2 100000 60503712
in f() 200000 60503728
in f() 100000 60503712
如果想在函数里面对全局变量进行修改,可以加关键词 global
a = 1 # 全局变量a 是定义在函数、类外面的变量 print("line 2",a,id(a)) def f(): global a a = 2 # # 全局变量 a ? 还是局部变量 a? print("in f() ",a,id(a)) f() print("line end",a,id(a))
输出结果:
line 2 1 2081907888
in f() 2 2081907904
line end 2 2081907904
再看一个示例:
a = 1 # 全局变量a 是定义在函数、类外面的变量 print("line 2",id(a)) def f(): global a a = 2 # # 全局变量 a ? 还是局部变量 a? print("in f() ",id(a)) print(a) f() print("line 2",id(a)) print(a)
输出结果:
line 2 140719966328592 in f() 140719966328624 2 line 2 140719966328624 2