国米萨队 发表于 2020-12-23 19:42:11

关于变量的问题

本帖最后由 国米萨队 于 2020-12-23 19:43 编辑

>>> s =
>>> s1 =s
>>> s.append("上山打老虎")
>>> s

>>> s1

>>> s =
>>> s1 = s
>>> s1.append("上山打老虎")
>>> s

>>> s1

>>>

为什么明明只操作s 或者s1 对应的s1 或者s都跟着变化

wp231957 发表于 2020-12-23 20:26:25

映像关系

太阳总会升起 发表于 2020-12-23 20:32:33

第一行给s一个列表,py会在内存中创建这个列表并给他一个s的标签,创建的列表就相当于一个仓库的货物,而s就是贴在货物上的标签
第二行s1=s,这里没有创建新的列表,只是给刚才创建的列表多加了个标签,也就是你在同一个货物上贴了两张不同的标签
第三行给s添加元素,因为s和s1本质上对应的是同一个列表,所以s改变s1也改变了

这部分你可以看深浅拷贝,希望上面我的描述能让你看懂{:5_95:}

tryhi 发表于 2020-12-23 22:10:15

s =
s1 =s.copy()
s.append("上山打老虎")

print(s)
print(s1)

Python初学者8号 发表于 2020-12-24 13:06:24

>>> s =
>>> s1 =s
>>> print(id(s))
2155339526600
>>> print(id(s1))
2155339526600
你看嘛,这个代码是可以查看变量的内存地址的,这是一个地址,所以这里的赋值“s1=s”其实就是一个人的两个名字而已
页: [1]
查看完整版本: 关于变量的问题