Re: [問題] 新手請益

看板Python作者 (阿真)時間16年前 (2009/03/20 20:01), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串11/16 (看更多)
上篇測試如下: KSJ.py -- a = "e " b = "e " c = "ee" print ( a is b ),id(a),id(b),id(c) #與之前一樣 a = 'QQ' #改變a的值 print id(a),id(b) #看看位置是否改變 print b #看看b值有沒有跟著變 a = "e " #把a值改回去 print id(a),id(b) #位置又如何呢?? -- >>> import KSJ True 12654208 12654208 10772704 #與之前一樣 a與b"位置"同 12654272 12654208 #換完數值之後 "位置" a的變了 e #顯然b值沒變 12654208 12654208 #奇怪的是 把a值改回去後指向的 "位置"跟b一樣 為什麼會說"奇怪" 原因是 在shell底下: >>> id('e ') 12654464 >>> id('e ') 12654368 >>> id('e ') 12654304 每次指向的位置都不一樣 obejct應該怎麼解釋比較好呢??@_@a "pointer to something real" 指向某些東西(我上面所說的"位置") 那個位置上有"值" 所以我在module裡寫: KSJ.py -- print id('e ') print id('e ') print id('e ') -- 結果是: >>> import KSJ 12654144 12654144 12654144 所以我推論: 在module的執行過程裡 Python會"自動"設 某個變數 把'e '這個字串 存起來 並指向一個位置 在shell裡 >>>id('e ') 執行完就會把 "某個變數" 自動清除 所以每次都會有不一樣的id位置 推論這個有什麼用嗎orz... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.63.199 ※ 編輯: KSJ 來自: 140.112.63.199 (03/20 19:39) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.63.199

03/20 20:52, , 1F
有用, 就是不要以為同內容的字串一定是同一 obj 嘍
03/20 20:52, 1F
文章代碼(AID): #19muMJOC (Python)
文章代碼(AID): #19muMJOC (Python)