python idle 解釋和直接 python script.py 解釋有什麼差別?

來源:互聯網
上載者:User

回複內容:

題主想的“逐行解釋”與“整體解釋”的差異的思路是對的,不過細節不太對。下面講點細節。
跟Sublime、IDLE啥的沒關係。

$ pythonPython 2.7.5 (default, Mar  9 2014, 22:15:05) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> a = 10.1>>> b = 10.1>>> a is bFalse>>> 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的解譯器存在朱濤所說的運行時,究竟如何要以後看瞭解釋器的實現過程才明白了。等以後填坑。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.