我有以下代碼:Python:動態定義函數
funcs = []
for i in range(10):
def func():
print i
funcs.append(func)
for f in funcs:
f()
問題是func
正在被覆蓋。即代碼的輸出是:
9
9
9
...
如果沒有定義新函數的,你將如何解決這個?
最佳解決方案是更改函數的名稱。即:
for i in range(10):
def func+i():
...
(或其他一些奇怪的語法)
改變函數的名稱是沒有必要的。名字只是名字。一旦你將它分配給funcs,你的函數的名字可能就是'funcs [0]','funcs [1]','funcs [2]'等。具有不同命名函數的唯一原因可能是if你正在搞'func .__ name__'。反正你也不應該這樣做。 – jcdyer 2010-02-08 15:34:37