我有一个调用另一个函数的函数。由于某种原因,第一个函数中的变量由第二个函数更新。 python是否通过ref传递变量作为默认值?基本上为什么' AA'在第二次运行中更新?我怎样才能使它像第一次运行一样。
为简单起见,我创建了一个具有相同问题的简短示例代码。我有一个函数(测试)调用(test2)。变量' AA'在'测试'由' test2'更新当我执行BB.append(list_position [0])。
这两项功能如下:
def test(A, childs):
for x in range(0,childs):
list_pos = [x]
AA = A
print("")
print("AA: ", AA)
print("list_position: ", list_pos)
test2(origin,list_pos)
def test2(B,list_position):
BB = B
list_len = len(BB)
print(list_position[0])
#BB.append(list_position[0])
第一次运行的输出(最后一个代码被注释掉):
AA: []
list_position: [0]
0
AA: []
list_position: [1]
1
AA: []
list_position: [2]
2
AA: []
list_position: [3]
3
第二次运行的输出(最后一次代码取消注释):
AA: []
list_position: [0]
0
AA: [0]
list_position: [1]
1
AA: [0, 1]
list_position: [2]
2
AA: [0, 1, 2]
list_position: [3]
3