Re: [問題] 新手請益

看板Python作者 (sbr)時間16年前 (2009/03/20 23:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串14/16 (看更多)
※ 引述《justlink (('(oo)'))》之銘言: : 版本 3.1a : 使用 win32 idle : e = "e " : print(e is "e ") : 得到True : Shell 底下 : False : 囧rz 這是? 你最前頭提到以 IDLE 來執行是指執行一個 module 吧? 如果你進入 IDEL UI 界面後,一行一行輸入 e = "e " print(e is "e ") # print e is "e ", in Python 2.5 應該會得到與在 console 下(interactive mode) 相同的結果。 看起來是因為編譯動作有一個特性:在一個編譯 => code object 的過程,parse 到 的所有內容相同的 string literals,會使用同一個 str object。 這有點兒像是你可以設定 C/C++ compiler 讓同一個 source file 裡的內容相同的 "..." literals 共用相同位址。 也類似 Java compiler 編譯一個 Java class source code 時,相同內容的 string literals 會參照到該 class 的 const pool 裡的同一個 String。 你只要讓 e = "e " print e is "e " 兩個 statement 在同一個編譯動作內編譯完,就可以產出與 run/import module 相同的輸出。 >>> exec 'e="e "\nprint e is "e "' # for Python 2.5 or simply: >>> e="e ";print e is "e " # for Python 2.5 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.137.166 ※ 編輯: sbrhsieh 來自: 218.173.137.166 (03/20 23:38) ※ 編輯: sbrhsieh 來自: 218.173.137.166 (03/20 23:43)
文章代碼(AID): #19mxWx85 (Python)
討論串 (同標題文章)
文章代碼(AID): #19mxWx85 (Python)