就比如说这个
global n
a = [[1, 2], [3, 4]]
n = a
def act(list1):
global n
n[0][0] += 1
return list1
print(act(a))
最后打印出来居然是[[2, 2], [3, 4]]
???这是什么原理啊
求大佬解答...
因为n和a实际上指向同一个列表。除非你
n = a[:] 复制下
这算是参数传引用问题了,如果你传入参数是一个int或tuple这种不可修改的参数,在函数里修改之后全局是不会改变的,因为修改之后变量的地址就会发生变化,即原来存放数据的地方变了,但list内容是可修改的,所以直接修改了全局变量的内容
建议使用n = a.copy() 赋值