我正在嘗試用 python 撰寫用某種語言撰寫的代碼的解釋器,目前停留在解釋函式上。似乎有一種方法可以使用類似的方法動態創建類,MyClass = type("MyClass", (object, ), dict())但我找不到創建函式的方法。我有一個在 python 代碼和執行中直接行到行代碼轉換的想法,但這并不是我真正想要做的。那么有沒有辦法動態創建函式,或者我能得到的最好的方法是:
foo_code = compile('def foo(): return "bar"', "<string>", "exec")
foo_func = FunctionType(foo_code.co_consts[0], globals(), "foo")
需要翻譯嗎?
uj5u.com熱心網友回復:
剛剛找到答案。動態創建函式的最好方法是根本不創建它。它與我的問題有點沖突,但仍然解決了問題。這個想法是將一個函式的結構作為字典中的鍵,將函式開頭的一行作為值。所以現在可以通過函式的結構找到它,執行然后通過提前保存Main的最后一行回傳正常執行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/398022.html
下一篇:argparse輸入范圍函式
