-2

リストから関数とその引数を作成し、それらを渡すことができる変数に保存する方法がPythonにあるかどうかを知りたいだけですeval

例:

def dummyfunction(title):
    print "Hello %s" %(title)

この関数を呼び出す通常の方法は次のとおりです。 dummyfunction("John")

私はリスト内に関数名とその引数を持っています.My要件は、文字列引数を取るため、関数への入力として使用できるlist1 = ['dummyfunction', 'John']この関数の文字列表現を取得することです。dummyfunction("John")eval

4

4 に答える 4

1

関数がモジュール グローバルとして定義されている場合は、次を使用できますglobals

func = globals()[list1[0]]
func(list1[1])

ただし、上記のコードにより、任意の関数が呼び出される可能性があります。それを望まない場合は、次のフォームを使用してください。

funcs = {
    'dummyfunction': dummyfunction,
}
func = funcs[list1[0]]
func(list1[1])
于 2013-08-11T12:56:21.867 に答える
-3

リストの最初の参照は本当に関数の文字列名ですか、それとも関数オブジェクトそのものですか? 関数オブジェクト自体の場合は、次のようにできます。

list[0](*list[1:])

それが本当に文字列名である場合は、次を試すことができます。

globals()[list[0]](*list[1:])

これは、関数がグローバル名前空間で定義されている場合にのみ機能することに注意してください。ローカルの名前空間、またはクラスなどにある場合は、globals() ではなく、その名前空間から関数を取得する必要があります。

于 2013-08-11T12:57:32.903 に答える