結論から言うと、from ... import ... は、モジュールやパッケージの中から必要な名前だけを直接読み込む書き方です。

Pythonでは、import math のようにモジュール全体を読み込む方法と、from datetime import date のように一部だけを読み込む方法があります。
どちらも便利ですが、使い分けを知らないと、コードを読んだときに名前の出どころが分かりにくくなることがあります。
この記事では、from ... import ... の基本と、実務で読みやすく使うための考え方を整理します。

この記事でわかること

  • from ... import ... の基本的な書き方
  • import モジュール名 との違い
  • 実務で使いすぎを避ける考え方

完成コード

完成コードは次の通りです。

from datetime import date
from pathlib import Path


def create_daily_report_path(folder: str, report_name: str) -> Path:
    today = date.today().isoformat()
    file_name = f"{today}_{report_name}.txt"
    return Path(folder) / file_name


report_path = create_daily_report_path("reports", "sales")
print(report_path)

同じ処理は、モジュール全体を読み込んで次のように書くこともできます。

import datetime
import pathlib

today = datetime.date.today().isoformat()
path = pathlib.Path("reports") / f"{today}_sales.txt"

コードのポイント

このコードでは、datetime モジュールから datepathlib モジュールから Path を直接読み込んでいます。

  • from datetime import datedate を直接使えるようにしています
  • from pathlib import PathPath を直接使えるようにしています
  • date.today()Path(folder) のように短く書けます
  • 一方で、どのモジュールから来た名前かは import 行を見て確認する必要があります

from ... import ... は短く書くためだけの機能ではありません。
そのファイルで使う名前を明確にし、必要なものだけを読み込むための書き方です。

コードを順番に説明します

主要な処理を分けて説明します。

1. 必要な名前だけを読み込みます

from datetime import date
from pathlib import Path

この部分では、モジュールの中から使いたい名前だけを読み込んでいます。
date は日付を扱うクラス、Path はファイルパスを扱うクラスです。

import datetime と書いた場合は datetime.date.today() のようにモジュール名からたどります。
from datetime import date と書いた場合は、date.today() のように直接使えます。

2. 読み込んだ名前を関数の中で使います

def create_daily_report_path(folder: str, report_name: str) -> Path:
    today = date.today().isoformat()
    file_name = f"{today}_{report_name}.txt"
    return Path(folder) / file_name

この関数では、今日の日付を使ってレポート用のファイルパスを作っています。
datePath を直接使えるため、処理が短くまとまっています。

戻り値の型注釈にも Path を使っています。
ファイル内で何度も使う名前なら、from ... import ... で直接読み込むと読みやすくなることがあります。

3. モジュール名付きの書き方と比べます

import pathlib

path = pathlib.Path("reports") / "sales.txt"

モジュール全体を読み込む書き方では、pathlib.Path のようにモジュール名を付けます。
少し長くなりますが、どこから来た機能なのかは読み取りやすくなります。

反対に、from pathlib import Path は短く書けます。
ただし、読み込む名前が増えすぎると、コードの途中だけを見たときに出どころが分かりにくくなる場合があります。

実務で使うときのポイント

実務では、from ... import ... を使うかどうかは、短さよりも読みやすさで決めると扱いやすいです。
よく使うクラスや関数だけを少数読み込むなら、コードがすっきりします。

一方で、次のような場合はモジュール名付きの import も検討します。

  • 同じような名前の関数が複数のモジュールにある
  • どのライブラリの機能か明示したい
  • 読み込む名前が多くなりすぎる
  • チーム内で import モジュール名 を優先する方針がある

第5章のパッケージ構成では、from sales.report import create_report のような書き方も出てきます。
便利な書き方ですが、使う名前を絞ることが読みやすさにつながります。

よくある勘違い・注意点

  • from ... import ... は、モジュール全体を使えなくする書き方ではありません
  • 直接読み込む名前が多すぎると、どこから来た機能か分かりにくくなります
  • from module import * は名前の衝突に気づきにくいため、通常の実務コードでは避けるほうが無難です
  • 短く書けることと、読みやすいことは同じではありません

まとめ

  • from ... import ... は、モジュールの中から必要な名前だけを直接読み込む書き方です
  • よく使う少数の名前を読み込むと、コードを短く読みやすくできます
  • 出どころを明示したい場合は、import モジュール名 のほうが分かりやすいこともあります
  • 実務では、名前の衝突や読み込みすぎに注意しながら使い分けることが大切です