在python中,将列表传递给函数,在函数中对列表进行任何修改都是永久性的。
但是如果在函数中对传递来的列表进行赋值操作,则不会影响列表的数据。
这样一段代码
def Merge_sort(arr):
arr = [4,6]
arr = [6,4,8,1,4,2,7,6]
Merge_sort(arr)
print(arr)
其输出结果,依然是[6,4,8,1,4,2,7,6]
而对列表使用append()
def Merge_sort(arr):
arr.append(4)
arr = [4,6]
arr = [6,4,8,1,4,2,7,6]
Merge_sort(arr)
print(arr)
输出结果 [6,4,8,1,4,2,7,6,4],列表发生了改变。
究其原因,在函数中给传递的列表进行赋值,会给这个函数中的列表开辟一个新的地址,所以对它的修改则不会影响函数外的列表。经过验证,如果将其他的列表赋值给函数中的列表,依然不会影响函数外的列表。