猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

引数としての関数

 Pythonでは引数として関数を渡すことができます。以下の例のfooは「引数として受け取った関数を実行する」関数です。

# test.py
def foo(func):
    func()

def bar():
    print "bar"

foo(bar)

実行結果

[root@localhost ~]# python test.py 
bar

 たしかに引数として渡した関数barが実行されています!そういえばschemeを勉強したときにも、こうしたことがあったような...

返り値としての関数

 引数の逆として、「関数の返り値」としての関数もあります。

#test2.py
def foo():
    def bar():
        print args
    return bar

print foo()
[root@localhost ~]# python test2.py 
<function bar at 0x7f362b334c08>