lambda 的改進
剛試著用 lambda 結果爛掉 找了一下發現這篇文章
Stupid lambda tricks
[Link]
python 的 lambda 有不少限制 如這篇文章說的
The official python documentation says, that you can only use expressions
in lambda, but not statements.
所以他就搞了一堆很有趣的寫法來突破這個限制
不過再怎麼搞還是有先天限制 不像 lisp 裡的那樣方便
perl 裡有一個類似的東西叫 anonymous function
但本質上還是跟 lambda 有點不太一樣 比較像是 anonymous code block
如果只是要在 python 單純使用 anonymous code block 的話
我倒是想到一種作法
>>> t = lambda: eval(compile(”"”
… i = 5
… while i > 0:
… print i
… i -= 1
… print “done”
… “”", ‘log’, ‘exec’))
>>> t
<function <lambda> at 0xb7debd14>
>>> t()
5
4
3
2
1
done
>>>
要傳參數進去也可以
>>> t = lambda x: eval(compile(”"”
… while x > 0:
… print x
… x -= 1
… “”", ‘log’, ‘exec’))
>>> t
<function <lambda> at 0xb7debdf4>
>>> t(3)
3
2
1
>>>
缺點是不能傳回結果