在def中定义的变量都是局部变量
def foo():
a = 200
print(a)
def fooo():
a=a+300
print(a)
fooo()
foo()
运行得到:
UnboundLocalError: local variable 'a' referenced before assignment
也就是说在函数fooo中并没有设置变量a,从而无法进行运算
1.第一次修改
def foo():
global a
a=200
print(a)
def fooo():
a=a+300
print(a)
fooo()
foo()
运行得到:
200
----------
UnboundLocalError: local variable 'a' referenced before assignment
在这次的修改中我们在函数foo中对变量a进行global的声明,但是在函数fooo中仍无法对a的值进行修改,这是因为对a进行声明后,函数fooo只对a有使用权,而没有修改权,也可以看下面的例子
a=200
def foo():
a=a+1;
print(a)
foo()
UnboundLocalError: local variable 'a' referenced before assignment
放在外面的a是全局变量,此时foo对a有使用但是没有修改权,但是在同一层级上则可以做修改
a=200
def foo():
print(a)
def fooo():
global a
a=a+300
print(a)
fooo()
foo()
运行得到:
200
500
在fooo中对a做声明后,提高了fooo对变量a操作的权限