一、变量作用域
例一:
c = 50 #全局变量
def add(x,y):
c = x + y #局部变量
print(c)
add(1,1)
print(c)
输出:
2
50
全局变量c不会影响局部变量c的作用域
例二:
c = 50 #全局变量
def add(x,y):
c = x + y #局部变量
print(c)
add(1,1)
print(c)
def demo():
print(c)
>>>
2
50
50
函数demo中没有定义局部变量c,全局变量作用在了函数demo中
例三:
c = 50 #全局变量
def demo1():
c = 50
for i in range(0,9):
c += 1
a = 'a'
print(c)
print(a)
demo1()
>>>
59
a
python没有块作用域,函数有作用域
例四:作用域链
c = 1
def func1():
c = 2
def func2():
c = 3
print(c)
func2()
func1()
输出结果3。受c = 3的作用域影响。
若只屏蔽c = 3,输出结果为2。向上一级寻找
若再屏蔽c = 2,输出结果为1。再向上一级寻找
二、global关键字
global关键字:将局部变量转为全局变量,使得函数外能够调用函数内的变量
例1:
def demo2():
global c
c = 2
demo2() #要先调用函数
print(c)
>>>
2
c也可以被import入其他模块