どのようにPythonで、同じ名前の関数を呼び出すために、リストから文字列を使用していますか?

Truewarlock:

私は私が尋ねることにしましたので、満足な答えをどこかを見つけることができませんでした。

我々はグローバルカウンタとグローバルリストを持っているとしましょう

counter=0
list=["function1","function2",..."functionN"]

我々はまた、我々は、これらの機能が定義されています:

def function1():
  pass
def function2():
  pass
.
.
.
def functionN():
  pass


私はボタンとのインタフェース、私はそれを押すたびに、グローバルカウンタが増加しています。数に応じて、私は別の関数を呼び出す必要があります。私はifとのelifでこれを実装することができますが、私はそれがスマートだとは思いません。私は、リストを使用してこれらの機能を呼び出すことができる方法はありますか?

場合カウンタ= 0 =>リスト[0] =>文字列)=>コール機能1 'はfunction1'(あります

押しボタンをもう一度

カウンタ= 1 =>リスト[1] =>文字列である '機能2' =>コール機能2()

クイン:

あなたは、このような名前で関数を呼び出すことができます。

locals()["myfunction"]()

または:

globals()["myfunction"]()

または、このような他のモジュールからの場合:

import foo
getattr(foo, 'myfunction')()

それはあなたのユースケースに合った場合は、だけではなく、文字列のリストの機能のリストを使用します。

def func1():
    print("1")

def func2():
    print("2")

def func3():
    print("3")

def func4():
    print("4")

some_list=[func1, func2, func3, func4]

# call like this
for f in some_list:
    f()

# or like this
some_list[0]()

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=16726&siteId=1
おすすめ