這是我在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