Pythonの無名関数で再帰

やたーPythonの無名関数で再帰出来たよー(^o^)ノ

import sys, new
for i in xrange(10):
    print i, (lambda n: n if n <= 1 else new.function(sys._getframe().f_code, globals(), None, None, None)(n - 1) + new.function(sys._getframe().f_code, globals(), None, None, None)(n - 2))(i)

実行結果:

0 0
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34

ちゃんと動いてますね。
sys._getframe().f_codeに引数を渡してevalする方法が見つからなかったのでfunctionオブジェクトを作って呼んでいます。
もっと良い方法があれば教えてくださいヽ(´ー`)丿