少ないケースだけど、lamdaの非力さを感じることはあるな。
例えば obj.onclick = lambda: self._onclick(3) とは書けるけど、
obj.onclick = lambda: raise TestException("Button3 is clicked") とはかけないから、
def _onclick():
    raise TestException("Button3 is clicked")
obj.onclick = _onclick
と3行(2行でも書けるけど)に分けて書かないといけない。

この制約の利点を無理に上げるとすれば、、この程度の不自由さと引き換えに、
Lisp脳の人が書いたlamdaを乱用したコードが排除できてメンテしやすい。