Ran*_*123 1 python list immutability
如果我有以下功能和代码:
def do_something(a, b):
a.insert(0, ’z’)
b = [’z’] + b
a = [’a’, ’b’, ’c’]
a1 = a
a2 = a[:]
b = [’a’, ’b’, ’c’]
b1 = b
b2 = b[:]
do_something(a, b)
Run Code Online (Sandbox Code Playgroud)
为什么print(a)屈服['z','a','b','c'],但打印b仍然只打印['a','b','c']?
在我所做的功能中b = b + ['z']也不z应该在列表中?
另外为什么打印a[:]不打印新列表['z','a','b','c']并打印旧列表['a','b','c']呢?
因为do_something您正在修改具有标签的列表,a但您正在创建新列表并将其重新分配给标签b,而不是使用标签修改列表b
这意味着名单之外do_something的a已被更改,但不是b一个,因为你只是巧合使用FUNC内相同的名字,你也可以做喜欢用不同的名称FUNC同样的事情:
def do_something(x, y):
x.insert(0, ’z’)
y = [’z’] + y
Run Code Online (Sandbox Code Playgroud)
并且你在外面的打印仍然会像报告一样,因为函数内部和外部的对象的标签不相关,在你的例子中它们恰好相同.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |