更新时 python 中列表或数组的范围

scopes of list or arrays in python when renewed

在这段代码中,我发现当第 1 行是 运行(第 2 行被注释)时,tcheck2 函数可以更改列表 x 但是当它在第 2 行更新 x=[[] for _ in range(3+1)] #2 时什么也没有x 恰好在 tcheck1 函数,这是为什么?

def tcheck():
    x=[11,54]
    tcheck2(x)
    print(x)
def tcheck2(x):    
    print(x)
    x[0]+=1 #1
    x=[[] for _ in range(3+1)] #2
    

来自您的代码:

def tcheck():
    x=[11,54]
    tcheck2(x)
    q(x)
def tcheck2(x):    
    q(x)
    x[0]+=1 #1
    x=[[] for _ in range(3+1)] #2
    # t+=3
    q(t)

#1 只是增加了 x 的一个元素。但是,行 #2 将局部变量 x 替换为全新的 list.

也许您的意思是:x[:] = [[] for _ in range(3+1)] #2 将更新 x 所指的 list 的全部内容。