看板 Python 關於我們 聯絡資訊
最近看到一個python程式,目的是將長的很像dict結構的字串 透過compile()與eval()轉換成dict,其程式碼如下: str1 = "{'a':4, 'b':42, 'c':99}" command = "result = %s" % str1 co = compile(command, "", "exec") eval(co,globals()) return result 不懂為什麼這裡可以直接回傳result? 而且result所存的值就是:{'a':4, 'b':42, 'c':99} , type是dict 很神奇!! 查過許多python的書雖然都有提到compile()和eval()這二個函式 但還是無法理解 為什麼可以這樣使用 就將字串轉成dict?? 請教各位大大 來解惑一下啦! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.72.248
twolights:compile() 是把輸入的 python 原始碼編譯成 bytecode 07/27 15:51
twolights:eval() 則是執行一段 expression 或者 code object 07/27 15:51
twolights:這段程式基本上就是執行 result = { .... } 這段 code 07/27 15:52
twolights:不過這種情況其實也不用寫得那麼複雜,直接: 07/27 15:56
twolights:return eval("{'a':4, 'b':42, 'c':99}") 就好 XD 07/27 15:57
bluevestige:原來如此!感謝^^ 07/27 16:34
bluevestige:其實我省略了原程式前面處裡的動作 只是把重點po上來 07/27 16:35
bluevestige:所以看起來才會感覺多些一舉!!XD 07/27 16:35