• 技术文章 >后端开发 >Python教程

    python idle 解释和直接 python script.py 解释有什么差别?

    2016-06-06 16:22:18原创805

    回复内容:

    题主想的“逐行解释”与“整体解释”的差异的思路是对的,不过细节不太对。下面讲点细节。
    跟Sublime、IDLE啥的没关系。

    $ python
    Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
    [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> a = 10.1
    >>> b = 10.1
    >>> a is b
    False
    >>> id(a)
    140475784803760
    >>> id(b)
    140475784803736
    >>> (10.1) is (10.1)
    True
    >>> def foo():
    ...   a = 10.1
    ...   b = 10.1
    ...   return a is b
    ... 
    >>> foo()
    True
    
    is 是判断identity的,如果两个变量 id (address)相同,那么a is b就是True;
    所以从执行结果来看,也是符合的。

    至于问题中的差别,那就是实现相关的,像10.1这样的small number是否再次赋值会复用id那是实现相关的(我的2.7.6是不同的id);我估计可能sublime本身内置有python的运行时(不太确定,我不大用sublime),所以会出现不同的表现。 给自己埋个坑,今天突然想到了一种可能,由于IDLE是逐条解释命令的,而python中的浮点数保存在堆内存中,每次创建一个浮点数,都会直接将堆内存地址压栈,创建相同浮点数时,IDLE也会执行重复动作;而当写到脚本中,用解释器执行时,碰到简单的数值对象,就会检查是否已经存在该对象(数值对象重复判断比较简单),从而直接将存在的堆地址压栈即可。
    应该是python的解释器存在朱涛所说的运行时,究竟如何要以后看了解释器的实现过程才明白了。等以后填坑。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:
    上一篇:Java相比Python3有哪些优势? 下一篇:Python 适合大数据量的处理吗?
    Web大前端开发直播班

    相关文章推荐

    • 详细讲解Python之Seaborn(数据可视化)• 完全掌握Python数学相关模块• Python详细解析之多线程爬虫与常见搜索算法• 带你搞懂Python反序列化• 归纳整理Python正则表达式知识点

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网