请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

微信公众号:
crossincode
 找回密码
 立即加入
查看: 397|回复: 5

请问一下各位大佬们为什么用file赋值两个相同的大于256的数,它们的id却是一样的。

[复制链接]

1

主题

0

好友

13

积分

新手上路

Rank: 1

发表于 2020-1-15 22:02:52 来自手机 |显示全部楼层
a=257
b=257
a is b
true
回复

使用道具 举报

158

主题

37

好友

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-1-16 16:41:53 |显示全部楼层
不明白你说的用 file 赋值啥意思
你这个代码我这里运行结果是
  1. In [1]: a = 257

  2. In [2]: b = 257

  3. In [3]: a is b
  4. Out[3]: False
复制代码
但你如果通过另一个变量赋值就不一样了:
  1. In [4]: c = 257

  2. In [5]: a = c

  3. In [6]: b = c

  4. In [7]: a is b
  5. Out[7]: True
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

158

主题

37

好友

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-1-16 16:43:26 |显示全部楼层
另外,这个其实不算是语法的一部分,即使是正常256以下id相等,你也不该依赖这个作为代码逻辑的一部分。因为很可能因为系统或版本的改变,这个优化的表现就不一样了。
它只是一种编译器执行层面的优化
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

13

积分

新手上路

Rank: 1

发表于 2020-1-16 19:58:39 |显示全部楼层
crossin先生 发表于 2020-1-16 16:43
另外,这个其实不算是语法的一部分,即使是正常256以下id相等,你也不该依赖这个作为代码逻辑的一部分。因 ...

嗯嗯,谢谢先生。我用file赋值的意思是,我先把这个代码写在一个file里,然后再run module,结果输出的是true,但是如果在idle里,一步一步地输入的话,输出的结果是false。

这是我的操作截图,第一个结果是运行file里的内容得出的结果。

这是我的操作截图,第一个结果是运行file里的内容得出的结果。

回复

使用道具 举报

158

主题

37

好友

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-1-17 17:32:53 |显示全部楼层
929231963 发表于 2020-1-16 19:58
嗯嗯,谢谢先生。我用file赋值的意思是,我先把这个代码写在一个file里,然后再run module,结果输出的是 ...

应该是编译器有优化,把两个相同的int用了同一个对象
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

13

积分

新手上路

Rank: 1

发表于 2020-1-17 21:35:42 来自手机 |显示全部楼层
crossin先生 发表于 2020-1-17 17:32
应该是编译器有优化,把两个相同的int用了同一个对象

原来如此,谢谢先生!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|Archiver|手机版|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2020-10-1 12:48 , Processed in 0.051777 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部