23110


Python3 では、`print`文が排除されました。  
`print`は、プログラムの構造に影響を与えないので、文ではなく関数である、というのはもっともだと思います。

しかし、なぜ `del` は文のまま残ったのでしょうか？  
`del`の逆の操作である「代入」が関数ではなく文だからでしょうか？

個人的には、`del`文もまた排除されるべき対象だったように思います。  
このままだと、`del` は関数としても文としても書ける (`del(a)` と `del a`)
ので、「同じことは同じ書き方」のPythonの流儀から外れているように思います。  
なぜでしょうか？


CC BY-SA 3.0
2016-03-13T17:12:32.810
23100
2016-03-14T06:36:39.163
565
question
python
Python3 で、`del`文が排除されなかったのはなぜですか？


`del`の機能は関数では実現出来ません。  
delが関数ならば、`del(a)`とした時`del`へ渡るのは変数`a`が評価された後の"値"であって"a"という変数名ではありませんから。

Lispのような言語ではこういった事も関数と同じ見た目の構文（マクロ）で行なう事が出来るようですね。  
その方が一貫性があってよい、という意見もあるかと思います。  
しかし、Python界隈は「違う機能には違う構文があるべき」という方針なのでしょう。


CC BY-SA 3.0
2016-03-14T04:16:31.660
23110
2016-03-14T04:16:31.660
3054
23100
answer