列出函数内的变量赋值,导致对全局变量进行不必要的更改
List variable assignment inside a function causing unwanted change to the global variable
我正在尝试创建输入到函数中的列表的副本,然后重新分配复制列表的值之一,然后 return 新列表。
w return 如我所料正确编辑。但是,当我 运行 这个函数时,它改变了我原来的列表。
a = [[0,1],[2,3]]
def func(l):
w = l
w[0][0] = 55
return w
func(a)
print(a)
Output: [[55, 1], [2, 3]]
我想看:
func(a)
print(a)
Output: [[0, 1], [2, 3]]
我原以为函数内部的任何改变都不会影响全局变量。如何在不更改 a 的情况下将函数设为 return w(使用重新分配的值)?
您只是在再次引用列表,实际上并没有创建新变量。
使用copy
模块
import copy
a = [[0, 1], [2, 3]]
def func(l):
w = copy.deepcopy(l)
w[0][0] = 55
return w
func(a)
print(a)
>>> [[0, 1], [2, 3]]
我正在尝试创建输入到函数中的列表的副本,然后重新分配复制列表的值之一,然后 return 新列表。
w return 如我所料正确编辑。但是,当我 运行 这个函数时,它改变了我原来的列表。
a = [[0,1],[2,3]]
def func(l):
w = l
w[0][0] = 55
return w
func(a)
print(a)
Output: [[55, 1], [2, 3]]
我想看:
func(a)
print(a)
Output: [[0, 1], [2, 3]]
我原以为函数内部的任何改变都不会影响全局变量。如何在不更改 a 的情况下将函数设为 return w(使用重新分配的值)?
您只是在再次引用列表,实际上并没有创建新变量。
使用copy
模块
import copy
a = [[0, 1], [2, 3]]
def func(l):
w = copy.deepcopy(l)
w[0][0] = 55
return w
func(a)
print(a)
>>> [[0, 1], [2, 3]]