考虑Python中的以下实例行为.
def change(elements):
elements[0] = 888
elements = [-3,-1,-2,-3,-4]
print(elements[0])
numbers = [1,4,5]
print(numbers[0])
change(numbers)
print(numbers[0])
print(numbers)
下面的Python代码段打印出来
1
-3,888
[888,5]
不应该打印
1,[-3,-4]
为什么列表中的元素会被成功覆盖,而不是整个列表对象?
最佳答案
该列表作为函数的引用传递.因此列表在全局空间和函数之间共享.第一个更改修改列表,并且更改将反映在两个空格中.但是你做了并分配给list变量.这会在函数中创建一个新列表.原始列表存在于全局空间中,但在函数中不再存在.因此,从该点开始对函数中的列表所做的所有更改仅在函数内可见.
考虑这个实例的另一种方式是列表是一种容器.函数的第一行更改容器中的内容.第二行(赋值)实际上更改了您正在使用的容器.对于列表而言,这也适用于任何对象.这就是@Chris_Rands在评论中给出的解决方案有效的原因:它修改了容器中的内容,它不会更改容器.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。