python 的全局变量和局部变量是我们在调用函数时,会很容易混淆的点。首先讲一下局部变量,通常,我们在函数内定义的变量即为局部变量(不加global 参数)。函数中的局部变量无法影响函数外的命名空间中的变量,即使他们有相同的变量名,也是不同的变量。我们在定义局部变量时,要注意不要与函数外的变量想混。但有些情况下,我们自己会以为是同一个变量,而犯错。如:
得到结果:
x = [1,2,3]
def sub(x):
x = x.pop()
当我们运行函数,查看x的结果时:
sub(x)
print(x0
[1,2]
此时,函数中的x 与函数外的x不是同一个变量(形参与实参)。按道理讲,函数外的x在执行完函数后,应保持不变,但是,因为x指向一个列表,而在函数执行的过程中,执行了列表类的一个方法pop(),所以,x才会改变。若x是全局变量的概念,那么函数执行结果后,x应为x.pop()返回的值3.
def sub(a):
global x
x = a.pop()
sub(x)
得到结果:
3