BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #13200同步于 2016/4/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

直接Python执行和写在.py文件里执行会不一样吗?

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