这是我在Wikipedia上发现的Python中Quicksort的源代码。关于变量作用域规则的Python问题
def pivot(v, left, right):
i = left
for j in range(left + 1, right + 1):
if v[j] < v[left]:
i += 1 # .. incrementa-se i
v[i], v[j] = v[j], v[i]
v[i], v[left] = v[left], v[i]
return i
def qsort(v, left, right):
if right > left:
r = pivot(v, left, right)
qsort(v, left, r - 1)
qsort(v, r + 1, right)
a = [4,2,4,6,3,2,5,1,3]
qsort(a, 0, len(a)-1)
print a # prints [1, 2, 2, 3, 3, 4, 4, 5, 6]
我的问题是关于范围。当我通过a作为上述示例中的一个参数时,如果函数qsort可能将变量a更改为全局范围,如果它不“调用”'global a'?我一直在python编程1年,最近开始学习C.看起来我正在做一些混淆。 感谢
这里重要的是`a`必须是一个可变类。如果`a`是一个不可变的类(即一个元组),它不起作用。 – 2011-02-15 19:05:47
没错。似乎我将不得不再次学习Python。谢谢。 – FRD 2011-02-15 19:11:21