2017-04-26 64 views
0

讓我們舉一個例子。 如果我們有一個函數def f(func): ...,其中func是一個函數對應的參數。 如果我們打電話f(merge),我想返回另一個函數名稱(不是文本)merge_ext然後可以執行。如何從另一個生成新的函數名稱

我已經確定了一個事實,即函數名col是用語法my_function.__name__提取的,但是如何生成可以用作函數的新函數名?

+0

'eval'會將文本更改爲函數調用,但您可能需要錯誤處理以確保該函數存在,並且您應該可以清理輸入。 – TLOwater

+4

爲什麼你不能只是'merge_ext = f(merge)'? –

+0

合併在變量func中,它可能是另一個值,所以我們必須使用func。怎麼樣? –

回答

0

看起來你好過裝修工

裝飾器是一個函數,它接受一個函數作爲參數,並返回一個函數。簡單的例子:

def simple_decorator(func): 
    return func 

您可以用@語法使用它:

@simple_decorator 
def decorated_function(some_arg): 
    return something 

在這種情況下,調用function將調用呼叫simple_decorator(function)返回的功能,這意味着你不能訪問原單function了。

但是這也可以這樣表示:現在

def no_yet_decorated_function(some_arg): 
    return something 

decorated_function = simple_decorator(no_yet_decorated_function) 

,您可以同時訪問你的函數。

相關問題