なぜPythonには"標準"で定数を定義できないのか?
結論から言うと、Pythonになぜ"標準"で定数がないのかは「わかりません」。
答えを求めていた人には申し訳ない。
Pythonには知っての通り、定数を定義できません。
(独自でconstクラスを実装すれば定数らしき事はできます)
定数の実装が難しいとは考えにくいので、「Gutioは意図的に定数を排除した」と考える方が自然だと思います。
ちなみに、他のスクリプト言語での定数の扱いは以下のとおりです。
perl | ... | use constantで定義可能 |
PHP | ... | define()で定義可能 |
JavaScript | ... | constで定義可能 |
Ruby | ... | 全大文字の変数は初期化以外の代入には警告を出す |
ほとんどの言語では、何らかの形で定数をサポートしています。
Rubyは、定数の代入に対して警告を出すのみなので、定数と呼ぶかは若干微妙ですが・・・
しかし、ここまで定数を無視する言語は珍しいと思います、逆にすがすがしいですね。
Pythonでは「なぜ標準で定数が無いのか」という問いに対して、納得できる解答に出会った事がありません。
- タプルを使えばいいじゃん
(タプルは定数の代わりにはなりません)
個人的にはRubyみたいに、定数を代入すると警告を出すくらいが調度いい塩梅だと思います。
(参照先からの代入には無力だけど・・)
Pythonでも定数にできる値は、「数値型」、「文字列型」、「タプル」のみと、変更不可オブジェクト限定にすれば、定数も結構うまく処理できると思いますけどね。