2014-10-09 119 views
1

我有一個相對較大的程序,我將其分解爲模塊 - 因此,我正在使用的不同模塊中的函數之間存在大量重疊。調用作爲參數傳遞的函數,不帶括號

我遇到的一個問題是需要將函數和類作爲參數傳遞給其他函數和類 - 在它們被定義之前。

我知道我可以傳遞函數名作爲字符串並使用exec(),我也可以在理論上使用帶有標準化鍵的字典。不過,我想知道如何通過在另一個函數參數中使用它作爲對象來調用函數。

我知道多個函數和類不帶括號的函數作爲參數並調用它們 - 所以我相信這是可能的。問題是如何?

基本的例子將是:

def func1(some_function): 
    #call some_function here 

並在單獨的模塊:

def func2(): 
    print("Success!") 

最終的結果將是:

>>>func1(func2) 
'Success!' 

我使用Python 3.4。我也假設什麼可以爲函數起作用可以用於類。

+4

嘗試some_function() – Phillip 2014-10-09 11:27:30

+0

哇這麼簡單......得愛吉多! – Scironic 2014-10-09 11:29:22

回答

2
def func1(some_function): 
    #call some_function here 

簡直變成

def func1(some_function): 
    some_function() 

函數是第一類對象在python

+0

到此爲止。謝謝! – Scironic 2014-10-09 12:35:04

1

下面這個是我做粗的,可以替代a任何名稱

def func1(): 
    return "ess" 
def func2(x): 
    return "succ" + x 

a = func1() 

print func2(a)