>>811
>式と文の違いは、オブジェクト指向とは関係ない。
>クロージャなら関数が持ってる。

>>807の指摘がOOPとは関係ないのであれば、大いに関係のある
「関数型言語との比較」という観点で見たPythonの欠点に書き換えましょう。
・ラムダ式(無名関数)の中で局所宣言(let式)ができない
・条件分岐が式ではなく文として実装されている
前者については、Smalltalk/Rubyには両者ともラムダ式はありませんが、代わりに
ブロック(クロージャ)があるので、局所宣言を含む無名関数を自然に記述できます。
Pythonで初心者にも分かり易い「局所宣言を含む無名関数」は書けますか?

後者については、明確なPython欠点でしょう。
確かにPython 2.5から三項演算子は追加されましたが、その構文
 <true expr> if <cond expr> else <false expr>
はPython固有の記法で、手続き型言語を含めた言語の中でも「異質な存在」です。
これなら、まだ Lisp風の
 (cond <cond expr> <true expr> <false expr>)
ような前置記法、あるいは、Smalltalk(やForth)風の
 <cond expr> ifTrue: <true expr> ifFalse: <false expr>
のような後置記法のほうがマシ(自然)に見えます。

「ラムダ式の実装が不完全」で、しかもプログラミングで多用される
「条件分岐が式ではない」Pythonは、関数型言語としても中途半端な言語に見えます。
これもまた手続き型言語へ「関数型を後から継ぎ足し」た言語設計ではないかと思います。