Python 3では、getattr
関数を使用することで、モジュール内の関数を文字列として指定して動的に呼び出すことができます。以下はその手順を説明する例です。
1. モジュールの関数を定義
まず、mymodule.py
というモジュールを作成し、いくつかの関数を定義します。
# mymodule.py
def greet(name):
return f"Hello, {name}!"
def farewell(name):
return f"Goodbye, {name}!"
2. 関数を名前(文字列)で呼び出す
次に、このモジュールの関数を文字列を使って呼び出すスクリプトを作成します。
# main.py
import mymodule
# 呼び出したい関数名を文字列で指定
function_name = "greet"
# getattrを使って関数を取得
function_to_call = getattr(mymodule, function_name)
# 関数を呼び出す
result = function_to_call("Alice")
print(result) # 出力: Hello, Alice!
# 別の関数を呼び出す
function_name = "farewell"
function_to_call = getattr(mymodule, function_name)
result = function_to_call("Alice")
print(result) # 出力: Goodbye, Alice!
説明
getattr(module, "function_name")
を使用すると、module
の中にあるfunction_name
という名前の関数を取得できます。- 取得した関数は、通常の関数と同じように引数を渡して呼び出すことができます。
- この方法は、関数の名前を動的に決定する場合に非常に有用です。例えば、ユーザー入力や設定ファイルから関数名を取得して、それに基づいて処理を行う場合などに使えます。
このようにして、Pythonでは文字列を使って動的に関数を呼び出すことが可能です。