数组的可变范围不同于python中的double

时间:2018-11-17 22:38:09

标签: python python-3.x scope encapsulation

当我在python中运行以下代码块时,对于输入x作为整数,func3和func4似乎正确地捕获了输入范围。但是,如果x是一个数组,则func2会将输入x视为[10],而不是[9]。为什么? python中的函数可以在特定函数范围之外更改变量吗?即,似乎func1正在修改全局x。

def func1(x):
     x[0] -= 1
     return(x)

def func2(x):
     x[0] -= 2
     return(x)

def func3(x):
     x -= 1
     return(x)

def func4(x):
     x -= 2
     return(x)

if __name__ == "__main__":
    x = [10]
    print(func1(x)) # [9]
    print(func2(x)) # [7]

    x = 10
    print(func3(x)) # 9
    print(func4(x)) # 8

0 个答案:

没有答案