找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2193|回复: 3

[讨论] 关于《python编程快速上手》一个例子的疑问--小白咨询

1

主题

3

帖子

3

积分

贫民

积分
3
pythonbaicai 发表于 2019-1-17 13:42:08 | 显示全部楼层 |阅读模式
在讲“引用”一节时,交互式下使用以下代码:
spam = 42
cheese = spam
spam = 100
spam
100
cheese
42

作者说把42赋值给了cheese,spam值被修改为100,因此cheese保持了42;
疑问:
1)为什么不认为spam和cheese都是42的或者100的标签而已呢?
2)该案例仅仅是“赋值”,不是“引用”吧,看的比较模糊


回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
luofuchuan 发表于 2019-1-18 15:20:21 | 显示全部楼层
你可以查下资料。 python一般说 的变量 和值是俩个东西  。值是有类型的的, 变量只是获取了值得引用, 说标签不太对。 因为引用可以赋给多个变量。a=5  b=a   实际上 a 和 b 都 是引用了5.   指向了同一个
回复 支持 反对

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
bone 发表于 2019-1-23 19:10:29 | 显示全部楼层
第一个问题:你可以认为是标签,一开始两个标签都贴到了42这个值上,但是当spam=100的时候,就把这个标签从42这个值上撕掉了,贴到了100这个值,此时cheese这个标签还在42上面贴着;第二个问题:赋值就是把变量名字和值建立了关联,你输入spam和cheese这两个变量名时,就看到了值,这就是引用



clipboard.png
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-1-23 19:42:42 | 显示全部楼层
第二个spam=100是个新变量和原来的spam不是一个地址
In [1]: spam=42

In [2]: cheese=spam

In [3]: cheese
Out[3]: 42

In [4]: id(spam)
Out[4]: 8791398201456

In [5]: id(cheese)
Out[5]: 8791398201456

In [6]: spam=100

In [7]: id(spam)
Out[7]: 8791398203312

In [8]: id(cheese)
Out[8]: 8791398201456
回复 支持 反对

使用道具 举报

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

本版积分规则

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