2017-04-26 8 views
0

例を挙げておきます。 関数がdef f(func): ...の場合、funcは関数に対応するパラメータです。 を次のように呼び出すと、別の関数名(テキストではない)merge_extを返して実行したいと思います。他の関数名から新しい関数名を生成する方法

私は、関数名colが構文my_function.__name__で抽出されるという事実を特定しましたが、どのようにして関数として使用できる新しい関数名を生成できますか?

+0

'eval'はテキストを関数呼び出しに変更しますが、おそらく関数が存在することを確認するためにエラー処理が必要なので、おそらく入力をサニタイズする必要があります。 – TLOwater

+4

なぜ 'merge_ext = f(merge)'だけできないのですか? –

+0

マージは変数funcの中にあり、それは別の値かもしれないので、funcを使う必要があります。どうやって? –

答えて

0

デコレータの後にいるようです。

デコレータは、関数を引数として受け取り、関数を返す関数です。簡単な例:functionあなたはorginal functionにアクセスすることはできませんを意味し、呼び出しsimple_decorator(function)によって返された関数を呼び出します呼び出し、その場合

@simple_decorator 
def decorated_function(some_arg): 
    return something 

:あなたは@構文で使用することができ

def simple_decorator(func): 
    return func 

もう

しかし、これはまた、このように表現することができます。

def no_yet_decorated_function(some_arg): 
    return something 

decorated_function = simple_decorator(no_yet_decorated_function) 

さて、あなたはあなたの両方の機能を利用することができます。

関連する問題