Skip to main content
 首页 » 编程设计

关于变量作用域规则的Python问题

2025年05月04日12artech

这是我在维基百科上找到的 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 如果它不'调用''全局a'?我已经用 python 编程了 1 年,最近开始学习 C。看起来我有点困惑。 谢谢

请您参考如下方法:

它不会重新绑定(bind) a/v,它只是改变它。如果您要改变绑定(bind)到的对象,则无需声明名称 global。