質問: Python3 では、`print`文が排除されました。 `print`は、プログラムの構造に影響を与えないので、文ではなく関数である、というのはもっともだと思います。 しかし、なぜ `del` は文のまま残ったのでしょうか? `del`の逆の操作である「代入」が関数ではなく文だからでしょうか? 個人的には、`del`文もまた排除されるべき対象だったように思います。 このままだと、`del` は関数としても文としても書ける (`del(a)` と `del a`) ので、「同じことは同じ書き方」のPythonの流儀から外れているように思います。 なぜでしょうか?
回答: `del`の機能は関数では実現出来ません。 delが関数ならば、`del(a)`とした時`del`へ渡るのは変数`a`が評価された後の"値"であって"a"という変数名ではありませんから。 Lispのような言語ではこういった事も関数と同じ見た目の構文(マクロ)で行なう事が出来るようですね。 その方が一貫性があってよい、という意見もあるかと思います。 しかし、Python界隈は「違う機能には違う構文があるべき」という方針なのでしょう。