我在玩全局变量和局部变量,注意到列表和整数的不同之处.
当我按照预期运行下面的代码时,为整数类型创建了两个不同的局部和全局变量.
a = 10
def fun(a):
a = a + 1
print(a)
print(id(a))
fun(a)
print(a)
print(id(a))
但当我为一个列表做同样的事情时,一些非常奇怪的事情发生了.在下面的代码中,函数内部和外部的变量具有相同的id.
a = [10, 12]
def fun(a):
a *= 3
print(a)
print(id(a))
fun(a)
print(a)
print(id(a))
这可能有一个解释,我想,如果有人知道,我很想知道原因,当然,但它变得疯狂,当我做了一个非常小的改变第三行,我不能把我的手指为什么.下面的代码将再次具有不同的全局和局部变量.
a = [10, 12]
def fun(a):
a = a * 3
print(a)
print(id(a))
fun(a)
print(a)
print(id(a))
如果有人能解释为什么列表会改变事情,以及为什么不使用短格式操作符来改变事情,那将是非常感激的!Python 3.10.6