備忘録

【Python】importの仕方

前提

Python: 3.12

1. importの基本

まずは、importの基本的な使い方について確認しよう。

Pythonでは、以下のように記述することでモジュールをインポートできる。

import モジュール名

例えば、数学関数を提供するmathモジュールをインポートしたい場合は、以下のように記述する。

import math

インポートしたモジュール内の関数などは、「モジュール名.関数名」のようにしてアクセスできる。

import math

result = math.sqrt(16)  # mathモジュールのsqrt関数を使う
print(result)  # 4.0

2. fromを使ったインポート

モジュール内の特定の関数やクラスだけをインポートしたい場合は、「from」キーワードを使う。

from モジュール名 import 関数名, クラス名, ...

例えば、mathモジュールからsqrt関数だけをインポートしたい場合は、以下のように記述する。

from math import sqrt

result = sqrt(16)  # モジュール名を省略できる
print(result)  # 4.0

3. 相対インポートと絶対インポート

複数のモジュールを組み合わせてプログラムを作成する場合、モジュール間のインポートが必要になる。

Pythonには、相対インポート絶対インポートという2種類のインポート方法がある。

  • 絶対インポートは、モジュールのフルパスを使ってインポートする方法。
  • 相対インポートは、現在のモジュールからの相対パスを使ってインポートする方法。

プロジェクトの規模が大きくなると、相対インポートは混乱を招きやすい。そのため、基本的には絶対インポートを使うことが推奨される。

4. 循環インポートとその解決策

2つのモジュールがお互いをインポートし合うことを循環インポートと呼ぶ。循環インポートは、プログラムの動作を不安定にする可能性があるため、可能な限り避けるべきだ。

循環インポートを解決するには、以下の方法が考えられる。

  • インポートする順番を変更する
  • モジュールの設計を見直す

関連記事

  • 【Python】pipの使い方
    前提 Python: 3.12 pipとは? Pythonパッケージ管理の強い味方 pipは、Package Installer for Pythonの略称であり、Pythonのパッケージをイン
  • 【Jinja2】for文の中で使えるloopについて
    前提 Python: 3.12 Jinja2: 3.1.3 参考 List of Control Structures — Template Designer Documentation — Jinja Documentation (3.1.x) Jinja2のloop変数とは Jinja2のloop変数は、for文などのループ処理内で自動的に生成
  • 【Python】文字列メソッドの使い方
    前提 Python: 3.12 参考 文字列メソッド — 組み込み型 — Python 3.12.3 ドキュメント Pythonの文字列メソッド Pythonを使いこなす上で、文字列処理は避けて通れない
  • 【Python】Pythonのurllibの使い方
    前提 Python: 3.12 参考 urllib.request — Extensible library for opening URLs — Python 3.12.3 ドキュメント urllibとは? - Python標準のWeb通信ライブラリ urllibは、URL (Uniform Resource Locator) を扱うため
  • 【Python】PythonのPathlibの使い方
    前提 Python: 3.12 基本 from pathlib import Path # カレントディレクトリからの相対パス file_path = Path("my_folder/my_file.txt") # ファイルが存在するか確認 if file_path.exists(): print("ファイルは存在します