作者bluevestige (Michael 6)
看板Python
标题[问题] 关於compile() 和 eval() 将字串转成dict
时间Mon Jul 27 15:04:34 2009
最近看到一个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
1F:→ twolights:compile() 是把输入的 python 原始码编译成 bytecode 07/27 15:51
2F:→ twolights:eval() 则是执行一段 expression 或者 code object 07/27 15:51
3F:→ twolights:这段程式基本上就是执行 result = { .... } 这段 code 07/27 15:52
4F:推 twolights:不过这种情况其实也不用写得那麽复杂,直接: 07/27 15:56
5F:→ twolights:return eval("{'a':4, 'b':42, 'c':99}") 就好 XD 07/27 15:57
6F:→ bluevestige:原来如此!感谢^^ 07/27 16:34
7F:→ bluevestige:其实我省略了原程式前面处里的动作 只是把重点po上来 07/27 16:35
8F:→ bluevestige:所以看起来才会感觉多些一举!!XD 07/27 16:35