我不明白的eval或exec語句執行中什麼樣的環境,你可以通過全局和局部範圍到他們,但我不太明白這意味着什麼。 python會爲它們創建一個匿名模塊嗎?如果是這種情況,全局和本地範圍如何區分?Python的評估和演示執行環境
它運行它喜歡它是一個匿名函數?如果是這樣的話,全局和局部範圍將對我更有意義,但是您是否仍需要調用global var
來防止python在賦值時創建局部變量?
這裏是一些代碼來證明什麼,我實際上是試圖做。
# module level vars
result = ''
allowed_builtins = {"__builtins__":{'int':int, 'str':str, 'range':range, 'dir':dir,
'zip':zip
},
"result":result}
在
類def _exec(self, answer, function_name, input):
global result
exec_string = answer + '\n'
exec_string += 'global result; result = %s(%s)' % (function_name, input)
exec exec_string in allowed_builtins, {}
return result
我想在我的範圍VAR結果能夠從EVAL/Exec的範圍內。
問問題!!!!!!!!!
謝謝,我明白我現在做錯了什麼。 – jacob 2010-02-28 19:50:47