前提・実現したいこと
Python3で、関数名を引数として渡し、呼び出した関数内でその引数に格納された関数を実行することは出来ますか?
したいこと
正確には実行できないコードですが、概念が伝わればと思い、一旦Pythonコード風に書きます。
Python
1def func(hoge): # hogeには、div(a,b)が代入されてほしい 2 try: 3 hoge # div(a,b)関数がここで初めて実行してほしい 4 except Exception as e: 5 return e 6 else: 7 return hoge # div(a,b) 2回目の実行にしたい 8 9def div(a,b): 10 return a/b 11 12def main(): 13 c = func(div(a,b)) # 本来であればdiv(a,b)の結果をfunc関数に渡されるが、この行ではdiv関数を実行してほしくない。 14
このプログラムにおいて、
- main関数を実行する
- main関数内のfunc関数の呼び出しで、引数として【div(a,b)】を与える(この時にdiv(a,b)を実行しない)
- func関数において、try文内とelse文内で、hoge(<-引数hogeに格納されたdiv(a,b))を実行する
これが出来るかお聞きしたいです。
ちなみにこれを実現したい目的としては、func関数内で、div関数ではない関数も同様に実行したいからです。
========
補足説明(7/27追記)
皆様ご回答ありがとうございます。
意図が一部伝わっていないような気がしましたので、追記させていただきます。(私の書き方が悪かったです…申し訳ないです…)
上記のPythonコードにおいて、既出のコード内に、add(a,b)関数があった場合において、
main関数内でc=func(add(a,b))
を実行すると、前出のdiv関数のときと同様にfunc関数内でadd関数が動くようにしたいです。
言い換えると、main関数内でプログラム内に存在する関数の関数名(div,add等)をfunc関数に渡し、func関数内にて、「渡された関数名(div,add等)」と同じ名前の関数(div()
関数, add()
関数等)を実行したいです。
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー