1. ホーム
  2. python

[解決済み] Pythonの関数を動的に呼び出す方法

2023-07-20 16:36:13

質問

このようなコードがあります。

fields = ['name','email']

def clean_name():
    pass

def clean_email():
    pass

どのようにすれば clean_name()clean_email() を動的に変更できますか?

例えば

for field in fields:
    clean_{field}()

中括弧を使ったのは、私がPHPでやっていた方法だからですが、明らかにうまくいきません。

Pythonでこれを行うにはどうすればよいですか?

どのように解決するのですか?

もし globals, vars を使いたくなく、動的に呼び出したい関数をカプセル化するために別のモジュールやクラスを作りたくない場合は、現在のモジュールの属性としてそれらを呼び出すことができます。

import sys
...
getattr(sys.modules[__name__], "clean_%s" % fieldname)()