变量作⽤域指的是变量⽣效的范围,主要分为两类:局部变量和全局变量。
#1.局部变量:所谓局部变量是定义在函数体内部的变量,即只在函数体内部⽣效。 def testA(): a = 100 print(a) testA() # 100 #print(a) # 报错:name 'a' is not defined #变量a是定义在 testA 函数内部的变量,在函数外部访问则⽴即报错。 #局部变量的作⽤:在函数体内部,临时保存数据,即当函数调⽤完成后,则销毁局部变量。 #2.全局变量:所谓全局变量,指的是在函数体内、外都能⽣效的变量。 # 定义全局变量a a = 200 def testA(): print(a) # 访问全局变量a,并打印变量a存储的数据 def testB(): print(a) # 访问全局变量a,并打印变量a存储的数据 testA() # 200 testB() # 200
二、正常情况下,局部变量和全局变量名字相同是,局部变量数值改变,全局变量的数值不改变。
a = 100 def testA(): print(a) def testB(): a = 200 print(a) testA() # 100 testB() # 200 print(f'全局变量a = {a}') # 全局变量a = 100
testB
函数内部的
a = 200
中的变量
a
是在修改全局变量
a 吗?
很明显不是。观察上述代码发现,
15
⾏得到
a
的数据是
100
,仍然是定义全局变量
a
时候的值,⽽没有返回。
testB
函数内部的
200
。综上:
testB
函数内部的
a = 200
是定义了⼀个局部变量。
三、如何在函数体内部修改全局变量?(
global
关键字解决这个问题
)
a = 100 def testA(): print(a) def testB(): # global 关键字声明a是全局变量 global a a = 200 print(a) testA() # 100 testB() # 200 print(f'全局变量a = {a}') # 全局变量a = 200