プログラミング言語
特徴 †
感想 †
- 命名ルールが結構いい加減。
- 大文字小文字、単語区切りとかの統一性がない。
- 標準モジュール名はほぼ全部小文字。
- 関数名などもほぼ小文字。単語間にアンダーバーを入れたり入れなかったり不安定。
- ファイル=モジュール名なので、Windows のように大文字小文字を判定しないファイルシステムからすると、全部小文字は合理的かもしれない。
- ドキュメントがかなり良くできている。チュートリアルを読めばたいてい困らないだろう。日本で流行らない理由は ruby があるせいか。
- 文法的にはかなりいい感じ。
一覧 †
モジュールと名前空間 †
- ファイル=モジュールで、名前空間はモジュールで分離されている。
- import しなければ他モジュールはアクセスできない。
- "import モジュール名" と "from モジュール名 import メンバ名" ってのは混乱の元だと思う。最初につまづいた。
- import モジュール名 の場合、モジュール名.メンバ名 でしかアクセスできない。よって名前は衝突しない。
- from モジュール名 import メンバ名 の場合、メンバ名で直接アクセスできるようになる。import での指定によっては名前の衝突の可能性がある。
メモ †
モジュールのソースを更新したのに、反映されない。モジュールのアンロード方法は? †
- import した場合、Python 実行環境内に記憶されてしまう。
- ソースを更新しても、自動検出はされない。
- reload() 組み込み関数を使ってリロードする必要がある。
- from ... import ... は、定義をコピーするので、リロードの影響を受けない。
- 再度 from を実行して再定義するか、そもそも import を使うようにする。
from Module import * のアスタリスクは使わない。常に明示する。 †
- 問題
- すべての名前がインポートされてしまうので、名前の衝突で予期せぬ動作を起こす場合がある。衝突検出はしてくれない。後勝ち。
Foo.py
def test():
print "foo"
Bar.py
def test():
print "bar"
User.py
from Foo import *
from Bar import *
test()
結果
bar