设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 7997|回复: 5
打印 上一主题 下一主题

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

[复制链接]

1

主题

0

好友

13

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2020-1-15 22:02:52 来自手机 |只看该作者 |倒序浏览
a=257
b=257
a is b
true
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

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
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

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里的内容得出的结果。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 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

6#
发表于 2020-1-17 21:35:42 来自手机 |只看该作者
crossin先生 发表于 2020-1-17 17:32
应该是编译器有优化,把两个相同的int用了同一个对象

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

使用道具 举报

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

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

GMT+8, 2024-11-23 03:12 , Processed in 0.026684 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部