にわかプログラマーにけやのお砂場

主に教科書的なプログラミングについて書きます。たまに趣味とか。

Pythonのドット(.)の意味

にわかなプログラマーなので間違っているかも。

ドットの意味

Pythonのプログラム内で使うドット(.)は意味としては三種類。

  • パッケージ内の階層構造

    • JavaPHPでも似たような使い方をすることがある。
    • Pythonではこの階層構造自体が名前空間として厳密に意味を持つっぽい(にわか)。
      • import urllibしてurllib.request.urlopen()しても動かないのはurllibとurllib.requestで違う名前空間になるから?
      • 追記(2017/09/16):ドキュメントによるとurllib.requestは「パッケージ.サブモジュール」ということらしい。
        つまりurllibとurllib.requestは同じパッケージ内の別モジュールということだ。
        そりゃ名前空間も違うわ。
  • 名前空間

    • PHPだと::が当てはまりそう
    • これのおかげで関数の名前の衝突怖くない
  • オブジェクトの属性

なぜこんなしょうもないまとめを書いたのか

身近で「import urllibしてurllib.request.urlopen()動いたんですけど!」と言われそんなはずあるかといろいろやってみて得た知見をどこかにまとめておきたかった。