List and Array 在 python3.6 中默认是全局的



只是下面的一个简单的代码:

import numpy as np
x=np.array([1,2])
y=[1,2]
L=1
def set_L(x,y,L):
    x[0]+=1
    y[0]+=1
    L+=1
    print(id(x))
    print(id(y))
    print(id(L))
我发现数组 x 和列表 y 在函数 set_L(( 中

是相同的,这是否意味着默认情况下列表和数组是全局变量?但是变量 L 在函数 set_L(( 中不是全局的。我很困惑为什么Python是这样设计的?

x[0]+=1 和 y[0]+=1 只是修改现有对象,而 L+=1 是一个赋值并创建一个新的本地引用。请参阅 https://stackoverflow.com/a/11867500/7662112

最新更新