2012-07-07 63 views
0

這是一個後續問題,最後一個問題我會問,你可以在這裏閱讀:將Python運算符和函數放入類的最佳方法?

Using Python's basic I/O to manipulate or create Python Files?

基本上我被要求允許Python來編輯其他Python程序源的最佳方式,目的是爲了搞砸/試驗,看看我是否可以將它們連接到遺傳算法或某種backprop網絡來獲得結果。

基本上,其中一個答案建議將每個Python運算符或代碼位(例如'=','if'等等等等)放入類中,然後由我/各種其他程序拼接在一起/編輯其他Python文件,利用Python的基本文件I/O作爲操縱手段。

這些類在每次初始化時都會獲得自己的唯一ID,這些ID將與行號,類型等一起存儲在SQLite3數據庫中用於記錄目的,並且將由其他類/基本的文件I/O系統。

我的問題是:這是一個理智的任務嗎?如果不是,我可以改變或做不同的事情?我在做什麼是值得的,還是完全愚蠢的?如果你需要澄清請問,我想知道我在做什麼似乎是合理的外部來源,或者如果我應該重新考慮/廢除整個交易...

在此先感謝。

+0

你最終想達到什麼目的? – uselpa 2012-07-07 08:25:27

+0

我只想看看我是否可以將基本操作符連接到各種遺傳算法或某種反向推理算法來獲得結果... – 2012-07-07 18:46:13

回答

0

不生成代碼修改代碼的AST。

import ast 
p = ast.parse("testcode") 

文檔爲AST:http://docs.python.org/library/ast.html

的修改的代碼示例:http://docs.python.org/library/ast.html#ast.NodeTransformer

實施例:(修改3 * 3 3 + 3)

from ast import * 
tree = parse("print(3*3)") #parse the code 
tree.body[0].value.args[0].op = Add() #modify multiplication to plus 
codeobj = compile(tree,"","exec") # compile the code 
exec(codeobj) #run it - it should print 6 (not 9 which the original code would print) 

順便說一句,我對在遺傳算法中。 如果你開始一個項目,我可以幫你。

+0

可以通過編程的方式實現一種學習算法:操縱它,但?我絕對沒有AST的經驗..... – 2012-07-07 18:43:10

+0

@亞倫是亞倫 這很容易。 – 2012-07-08 13:54:05

相關問題