2013-04-05 167 views
-1

我想知道是否有辦法自動定義一個函數。比如我要像一組功能:有沒有辦法在python中自動定義一個函數?

def add1: 
    list.append(x) 
def add2: 
    list.append(y) 
def add3: 
    list2.append(x) 
... 

的問題是,我必須定義大量的這些,232是準確的。有沒有更快的方法來做到這一點?另外,我使用Python 3.2。

+1

什麼是你想定義不同的行爲做?你可以使用lambda函數,如果它正在模式中做某件事。 – karthikr 2013-04-05 14:37:03

+4

更好的問題是,爲什麼你認爲你需要232函數幾乎相同 – jozefg 2013-04-05 14:37:11

+5

爲什麼你想定義232函數?這聽起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – 2013-04-05 14:37:24

回答

1

您可以使用exec

例如:

def your_common_function(i, txt): 
    # here you may decide what to do with arguments according to "i" value 
    if i == 1: 
     print(txt) 
    else: 
     print(txt+'s') 

for i in range(1, 233): 
    exec("def add%d(txt):\n\tyour_common_function(%d, txt)" % (i, i)) 

add1("hello world") # prints "hello world" 
add167("hello world") # prints "hello worlds" 

編輯我改變了我的代碼,以便您可以按「功能編號」

+0

謝謝。那可行。 – Anthony 2013-04-05 16:09:38

相關問題