【发布时间】:2016-08-04 18:40:41
【问题描述】:
我有如下方法:
def slice_list(my_list, slice_point):
my_list = my_list[:slice_point]
print("Inside method: ", my_list)
return
我对它进行了如下测试:
if __name__ == "__main__":
my_list = [1,2,3,4,5]
slice_point = 3
slice_list(my_list, slice_point)
print("Outside method: ", my_list)
我得到的输出不是我所期望的,因为列表最终没有被编辑
>>>Inside method: [1, 2, 3]
>>>Outside method: [1, 2, 3, 4, 5]
但是当我对列表执行append 时,它确实会永久编辑列表,如下例所示:
def append_to_list(my_list, element):
my_list.append(element)
print("Inside method: ", my_list)
return
if __name__ == "__main__":
my_list = [1,2,3,4,5]
append_to_list(my_list, "new element")
print("Outside method: ", my_list)
它给出以下输出:
>>>Inside method: [1, 2, 3, 4, 5, 'new element']
>>>Outside method: [1, 2, 3, 4, 5, 'new element']
为什么切片不会永久更改列表?
【问题讨论】:
-
您应该阅读有关局部和全局变量的信息。除非指定为全局变量,否则在函数中创建或重新分配的任何变量都被视为局部变量。但是追加不会重新分配...
-
另外,你的函数不是方法。
标签: python list python-3.4 slice