
[code]

    from . import hogehoge
    
[/code]

とあるのですが、この`.`は何を意味するのですか。


CC BY-SA 4.0
2020-03-15T01:44:00.173
63851
2020-03-15T08:52:02.127
2020-03-15T02:26:26.697
32986
38112
question
python
importするときに使うドットはどういう意味ですか？


`.` は自分と同じパッケージを示しています。

Python では import をするとき、相対パスで import をすることもできるようになっています。たとえば「内部的に使っているパッケージを
import したい」というときに使うことがあります。

相対パスで import をする際にはそのパスを書かないといけない訳ですが、「自分と同じパッケージにあるものを import したい」という際に `from
. import ～` という風に書きます。

また、「自分の隣にあるモジュールを import したい」というときに `from .tonarinomodule import ～`
と書くこともできます。

具体例を見てみましょう。次のようなディレクトリ構造があったとします。

[code]

    myproject/
    ├── packageA
    │   ├── __init__.py
    │   └── module1.py
    └── packageB
        ├── __init__.py
        ├── module2.py
        └── module3.py
    
[/code]

更に packageB の `__init__.py` で `ClassX` が、`module3.py` で `ClassY` が定義されてるとします。

このとき `module2.py` から `ClassX` や `ClassY` を import しようと思うと次のように書けます。

[code]

    from . import ClassX
    from .module3 import ClassY
    
[/code]

相対 import はこのようにすぐそばにあるモジュールを手軽に import したいというときに便利です。

一方で相対 import はディレクトリ構造に依存するため、規模が大きめのプロジェクトでは管理しにくく、あまりオススメできません。たとえば上の例だと相対
import を使って `module2.py` から `module1.py` にあるものを import、というのもできるのですが、`packageA`
のディレクトリ上での位置が変わるだけで機能しなくなってしまいます。


CC BY-SA 4.0
2020-03-15T02:32:04.737
63852
2020-03-15T08:52:02.127
2020-03-15T08:52:02.127
19110
19110
63851
answer