python小技: 今中にいるこの関数を参照する


import sys
def foo():
this_fun_name=sys._getframe().f_code.co_name
this_module=__import__(__name__, fromlist=['hoge'])
print getattr(this_module, this_fun_name)
走らせるとこうなる

私を呼んでいる関数も参照できる。


def bar():
fn=sys._getframe(1).f_code.co_name
this_module=__import__(__name__, fromlist=['hoge'])
print getattr(this_module, fn)

def baz():
bar()

baz()


色々な楽しい乱用の仕方が浮んでくるね。
スタックの探索は気をつけてやろう。