为什么作业错了?

时间:2017-05-25 11:06:48

标签: python

def foo(a, b):
    a = 1
    b[0] = 2

p, q = 100, [200, 300]
foo(p, q)
print(p, q)

>>> 100 [2, 300]

我的问题是,为什么q会改变,但p不会改变?谢谢!

1 个答案:

答案 0 :(得分:1)

q是一个列表因此“通过引用传递”到函数。 p按值传递。