当我在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