Skip to content

PEP 8 インポートの記述規則

PEP 8(Pythonの公式スタイルガイド)では、インポートの記述方法について明確な規則が定められている。

インポートのグループ分けと順序

ソースコードの冒頭で、以下の順序でインポートをグループ分けし、各グループの間に空行を1行入れる。

# 1. 標準ライブラリ
import os
import sys
from pathlib import Path

# 2. サードパーティライブラリ
import numpy as np
import pandas as pd
import requests

# 3. ローカルアプリケーション固有のインポート(自作モジュール)
from my_app.utils import function_a
from my_app.models.user import User

各グループ内では アルファベット順 に並べることが推奨されている。

__all__ の配置規則

モジュールレベルの「ダンダー名」(__all____version__ など)は、ドキュメント文字列の直後、かつインポート文(from __future__ を除く)の前に配置する。

"""モジュールの説明文"""

__all__ = ["PublicClass", "public_function"]
__version__ = "1.0.0"

import os
import sys

from my_app.utils import function_a

ワイルドカードインポートの回避

from module import * は、どの名前が現在の名前空間に存在するかを不明瞭にするため 原則として避ける

# 非推奨(何がインポートされるか不明瞭)
from my_app.utils import *

# 推奨(明示的に指定)
from my_app.utils import function_a, function_b

1行1インポート

複数のモジュールを1行にまとめるのは非推奨。

# 非推奨
import os, sys

# 推奨
import os
import sys

from を使う場合は例外的に複数を1行にまとめることもある。

# 許容される
from pathlib import Path, PurePath

関連

引用元: NotebookLM