我在研究合并排序,我写了这段代码
def mergesort(a): #sorting algo
#code is alright just confused about scope of variable
if(len(a)>1):
mid = len(a)//2
l = a[:mid]
r = a[mid:]
mergesort(l)
mergesort(r)
i=j=k=0
while(i<len(l) and j<len(r)):
if(l[i]>r[j]):
a[k] = r[j]
j+=1
else:
a[k] = l[i]
i+=1
k+=1
while(i<len(l)):
a[k] = l[i]
i+=1
k+=1
while(j<len(r)):
a[k] = r[j]
j+=1
k+=1
a = [30,2,4,5,-1,3,7,3,9,2,5]
mergesort(a)
print(a)
这里的a
是一个全局变量,但是当函数参数名也是a
时,函数作用域中的a
不会覆盖全局作用域中的a
吗?mergesort
函数中的全局变量是如何编辑的?
我try 了另一个使用相同方法的代码,但这里的全局变量没有被编辑(如预期的那样),这与上面的代码有什么不同?
def foo(a):
a=20
a = 10
foo(a)
print(a)