【发布时间】:2015-10-14 17:23:00
【问题描述】:
直到最近,我还认为 Python 按值传递参数。例如,
def method1(n):
n = 5
return n
n = 1
m = method1(n)
>>> n == 5
>>> False
但是如果我将一个列表传递给一个方法,比如
def method2(list):
del list[0]
return list
list1 = [0,1,2,3,4,5]
list2 = method2(list1)
>>> list1
>>> [1,2,3,4,5]
它会改变列表。我又做了一个测试:
l1 = ['a','b','c','d']
x = method1(l1)
>>> l1
>>> ['a','b','c','d']
这里的列表没有改变。我的问题是
为什么会出现这些不同的情况?
【问题讨论】:
-
这里解释得很好,stackoverflow.com/questions/986006/… list 是可变类型
标签: python methods pass-by-reference pass-by-value