cnt=1000
def foo():
print("foo函数内",cnt)
foo()
print("foo函数后",cnt)
def foo1():
cnt=0 #为什么此处函数内,不能修改外部的变量cnt?
cnt=cnt+1
print("foo1函数内",cnt)
foo1()
print("foo1函数后",cnt)
#######
l=[0]
def foo2():
print("foo2函数内",l)
foo2()
print("foo2函数后",cnt)
def foo3():
l[0]="*"#为什么此处函数内可以修改外部的列表l?
print("foo3函数内",l)
foo3()
print("foo3函数后",l)
你这里是局部变量和全局变量。
你的foo是直接引用全局变量cnt
你foo3中你缺少
1
定义过程,所以实质是直接引用了全局变量l
来进行修改,所以变动了全局变量。如果你按下面定义foo3,就不能影响全局变量
l