0
foo.py調用它們生成運行Python函數與字符串名稱
def foo_001(para): tmp = para + 2 return tmp
def foo_002(para): tmp = para * 2 return tmp
def foo_003(para): tmp = para/2 return tmp
...
def foo_100(para): tmp = #complex algo, return tmp
main.py
from foo import *
fun_name = ["foo_001","foo_002","foo_002" ... "foo_100"]
src = 1
rzt = []
for i in fun_name:
rzt.extent(eval(i)(src))
這裏是我的問題:
我可以得到fun_name列表在運行時,因爲我想將它們保存在文本文件中?
我發現有功能定義中的常見部分是「tmp = #algo」,我可以從那些定義中提取它們嗎?我可以在運行時定義這些函數嗎?我想是這樣的:
foo.py
def foo_factory():
# in somehow
return adict #function_name/function pair
template = [
["foo_001","tmp = para + 2"],
["foo_002","tmp = para * 2"],
["foo_002","tmp = para + 2"],
...
["foo_100","tmp = #complex algo"]
main.py
from foo import *
dic = foo_factory(template)
fun_name = dic.keys()
src = 1
rzt = []
for i in fun_name:
rzt.extent(eval(i)(src))
#or
rzt.extent(dic(i)())
感謝您的回覆,但您的答案和修飾器可能不是我想要的,我希望sinppet可以在運行時生成函數的名稱,並且可以在下次運行時執行相同的操作。 – user478514 2010-10-27 09:43:37