在以下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'是同一个变量块的不同名称?如果是,那么为什么它在第一个代码中不正确。感谢
答案 0 :(得分:0)
如上述评论中所述,Python通过引用传递列表。实际上,Python通过引用传递所有引用对象。
我认为this帖子的答案可以更好地解释这个问题。
编辑: 这种解释有点不正确。我已经证明Python只有可变或不可变的对象。因此,它们不会通过引用/值传递。无论如何,有了这些知识的解释或多或少都是一样的。