局部变量和全局变量是不同的变量
局部变量是函数内部的占位符,与全局变量可能重名但不同。函数运算结束后,局部变量就会被释放,它只是用于函数内部运算,可以用global保留字在函数内部使用全局变量
n,s = 10,100
df fact(n):
s = 1 #若此处换作 global s 则声明是全局变量s = 100
for i in range(1,n+1):
s *= i
return s
print(fact(n),s)
fact()函数中s时局部变量,与全局变量s不同,函数中间通过运算获得的s的值也是局部变量,所以最后一句打印出的s是当前的全局变量s,即最后运行结果是10!以及100。
局部变量为组合数据类型且未创建,等同于全局变量
ls = ["F","f"]
df func(a):
ls.append(a)
return
func("C")
print(ls)
第三行的ls是列表类型,未真实创建则等同于全局变量,意思是在ls这个列表中增加一个元素a,第五行调用func这个函数,意思是我在ls这个列表中增加一个变量“C”,这段代码的运行结果为:['F','f','C']
ls = ["F","f"]
df func(a):
ls=[]
ls.append(a)
return
func("C")
print(ls)
再看这段代码,我们在函数func中增加了一行 ls=[] ,真实的创建了这个ls列表,则这个程序的结果为:['F','f']
在python中,组合数据类型是用指针来体现的,所以函数中如果没有真实创建组合数据类型,它使用的变量是使用的指针,而指针指的是外部的全局变量,所以你去修改这个指针对应的内容,就修改了全局变量