返回信息流就是标题这个问题.
这是编辑器的效果
这是直接执行.
求问 区别在哪? 为何会有区别?
按源码的逻辑该是False.但是编辑器这边显示True是哪里优化了么?
那么 我该去哪里看这个优化的列表呢?
这是一条镜像帖。来源:北邮人论坛 / python / #13200同步于 2016/4/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
直接Python执行和写在.py文件里执行会不一样吗?
fp544037857
2016/4/7镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
用哪个哪能是我决定啊. >.<
Python 3 也是一样的。。.
肯定是解释器优化的结果..
暖神...你不能只解释到这一步啊...
【 在 nuanyangyang 的大作中提到: 】
: 别用Python2。换Python3我就告诉你
【 在 fp544037857 的大作中提到: 】
: 用哪个哪能是我决定啊. >.<
不是你决定,那是谁决定啊?
: [upload=1][/upload]
: Python 3 也是一样的。。.
: ...................
Python内部只预先创建0-255这256个整数对象,其余的都是按需创建的。所以,总的来说,整数的id没准。不要通过id来比较整数是否相等。
这个是看源码那部分的时候,试了一下发现的.
Python 数字类型的实现,[-5,256)会缓存在一个地址,所以shell执行:
```python
>>a = 1; b = 1
>>id(a) == id(b)
True
>>a = 300; b = 300
>>id(a) == id(b)
False
```
但是合在一块输入或者是作为一个函数或者是作为一个文件,从字节码的结果看,貌似编辑器都会优化一下,我比较好奇这部分优化具体是哪里规定的,其他可能的优化还有什么之类的东西...
谢暖神啦~~
【 在 nuanyangyang 的大作中提到: 】
:
: 不是你决定,那是谁决定啊?
:
: ...................
【 在 fp544037857 的大作中提到: 】
: 这个是看源码那部分的时候,试了一下发现的.
: Python 数字类型的实现,[-5,256)会缓存在一个地址,所以shell执行:
: ```python
: ...................
并不是所有的细节都可以依靠。所以,最好的答案就是“不知道哪些int值会缓存”,并永远用==判断相等。
至于哪里规定的,只能看Python的Language reference了。Python没有“标准”。即使有,有时候也并不是把所有的行为都规定死,而是给语言的实现(解释器、编译器、标准库什么的)一些灵活的空间。
core python 中说的是-1到1000。。。
【 在 nuanyangyang 的大作中提到: 】
:
: 不是你决定,那是谁决定啊?
:
: ...................
啊..莴苣....我看过你好几篇文章...
是看到源码这么写.小整数池.顺手试了一下.
我猜是解释器优化的问题..字节码显示确实是
但是这么做的话..源码里特意写的小整数池还有什么意义么?
反正我解释的时候总会优化.相同的时候干掉多余的一个.
【 在 binux 的大作中提到: 】
: 不要把实现当特性