mea*_*mea 2 python variable-assignment del
我只有一小段代码,并且有一个很大的疑问。
s=['a','+','b']
s1=s
print s1
del s1[1]
print s1
print s
Run Code Online (Sandbox Code Playgroud)
输出是
value of s1 ['a', '+', 'b']
value of s1 ['a', 'b']
value of s ['a', 'b']
Run Code Online (Sandbox Code Playgroud)
为什么我单独修改s1时变量's'的值会改变?我怎样才能解决这个问题?
先感谢您 :)
在第二行中,您将对s进行新引用
s1=s
Run Code Online (Sandbox Code Playgroud)
如果要使用其他变量,请使用slice operator:
s1 = s[:]
Run Code Online (Sandbox Code Playgroud)
输出:
>>> s=['a','+','b']
>>> s1=s[:]
>>> print s1
['a', '+', 'b']
>>> del s1[1]
>>> print s1
['a', 'b']
>>> print s
['a', '+', 'b']
Run Code Online (Sandbox Code Playgroud)
这是您之前做过的事情:
>>> import sys
>>> s=['a','+','b']
>>> sys.getrefcount(s)
2
>>> s1 = s
>>> sys.getrefcount(s)
3
Run Code Online (Sandbox Code Playgroud)
你可以看到,引用计数的s增加1
来自python 文档
(Python中的赋值语句不复制对象,它们在目标和对象之间创建绑定。)