来自另一个函数的变量以某种方式得到更新

时间:2016-01-27 21:44:09

标签: python list function

我有一个调用另一个函数的函数。由于某种原因,第一个函数中的变量由第二个函数更新。 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

0 个答案:

没有答案