【发布时间】:2018-01-02 07:10:34
【问题描述】:
在 Python 中,列表是通过引用函数来传递的,对吧?
如果是这样,这里发生了什么?
>>> def f(a):
... print(a)
... a = a[:2]
... print(a)
...
>>> b = [1,2,3]
>>> f(b)
[1, 2, 3]
[1, 2]
>>> print(b)
[1, 2, 3]
>>>
【问题讨论】:
-
a[:] = a[:2]是你应该做的。 -
或
del a[2:]也可以,并且更具可读性。 -
f接收对列表的引用,而不是对b变量的引用;分配给a不会影响b变量。虽然f是通过引用传递的,但“按引用传递”具有特定含义,不适用于 Python 的参数传递模型。 -
nedbatchelder.com/text/names.html 是我见过的了解 Python 的这部分工作原理的最佳参考。
标签: python python-2.7 list function reference