鱼C论坛

 找回密码
 立即注册
查看: 1570|回复: 3

[已解决]关于 “=”的疑问

[复制链接]
发表于 2020-3-15 10:24:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
都说“=”的作用是贴标签,但这样似乎a并不会随着i一起变化
>>> i=2
>>> a=i
>>> i+=3
>>> a
2
>>> i
5
可是如果放在列表中,却又不一样了。我取了列表temp中的元素,怎么list也跟着变空了?
>>> list = [1,2,3,4,5,6,7,8,9]
>>> list1 = []
>>> temp = list
>>> for i in range(len(temp)) :
        list1.append(temp.pop())

>>> list
[]
>>> list1
[9, 8, 7, 6, 5, 4, 3, 2, 1]

那么,“=”到底是赋值还是贴标签呢???
最佳答案
2020-3-15 10:39:05
本帖最后由 _荟桐_ 于 2020-3-15 10:50 编辑

id()可以查询地址

>>> i = 1
>>> a = i
>>> id(a)
140721976624800
>>> id(i)
140721976624800
>>> i +=1
>>> i
2
>>> a
1
>>> id(i)
140721976624832
>>> id(a)
140721976624800
>>> id(1)
140721976624800

a=1,i=1
相当于给1贴了两个标签
当i改变时,i指向的数就变了,而a依然指向1
从上面这段代码可以看出a改变时,a的地址改变了,而i的不变

>>> temp = [1,2,3,4,5]
>>> list1 = temp
>>> id(temp)
2293700701632
>>> id(list1)
2293700701632

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-15 10:26:52 | 显示全部楼层
python中赋值就是贴标签
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 10:39:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 _荟桐_ 于 2020-3-15 10:50 编辑

id()可以查询地址

>>> i = 1
>>> a = i
>>> id(a)
140721976624800
>>> id(i)
140721976624800
>>> i +=1
>>> i
2
>>> a
1
>>> id(i)
140721976624832
>>> id(a)
140721976624800
>>> id(1)
140721976624800

a=1,i=1
相当于给1贴了两个标签
当i改变时,i指向的数就变了,而a依然指向1
从上面这段代码可以看出a改变时,a的地址改变了,而i的不变

>>> temp = [1,2,3,4,5]
>>> list1 = temp
>>> id(temp)
2293700701632
>>> id(list1)
2293700701632

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 10:48:50 | 显示全部楼层
第一个是不会变化,因为a被改变,它的标签被撕了下来
但是这样标签是不会被撕下来的:
>>> a = [1, 2, 3, 4, 5]
>>> b= a
>>> a.sort(reverse = True)
>>> a
[5, 4, 3, 2, 1]
>>> b
[5, 4, 3, 2, 1]
>>> a.append(6)
>>> a
[5, 4, 3, 2, 1, 6]
>>> b
[5, 4, 3, 2, 1, 6]
因为这样调用的是列表的内置方法,不是把标签撕下来贴到别的地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 21:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表