函数传递变量到函数差异Python

时间:2016-07-25 13:53:31

标签: python python-2.7

在以下Python 2.7代码中

a = 10
def foo(b):
    b = b * 2
    print a


foo(a)

变量'a'和'b'表示内存中的不同变量空格,因此结果始终为'10'。但是在下面的代码中

my_numbers = []

def func_while(numb):
    i = 0
    while i < 5:
        print "At the top i is %d" % i
        numb.append(i)

        i = i+1
        print "Number now: ", my_numbers

        print "At the bottom i is %d" % i


func_while(my_numbers)    

print "The numbers: "

for num in my_numbers:
    print num

追加'numb'变量(在func_while()的帮助下)会自动在'my_numbers'变量中进行更改。怎么会 ? 'numb'变量和'my_numbers'是同一个变量块的不同名称?如果是,那么为什么它在第一个代码中不正确。感谢

1 个答案:

答案 0 :(得分:0)

如上述评论中所述,Python通过引用传递列表。实际上,Python通过引用传递所有引用对象。

我认为this帖子的答案可以更好地解释这个问题。

编辑: 这种解释有点不正确。我已经证明Python只有可变或不可变的对象。因此,它们不会通过引用/值传递。无论如何,有了这些知识的解释或多或少都是一样的。