Pythonを書いていて「import文がごちゃごちゃしてきた…」「毎回同じモジュールをimportするのが面倒」と感じたことはありませんか?
この記事では、そんな悩みをスッキリ解決するimport文の裏技・小技を10個厳選してご紹介します。
単なる文法解説ではなく、「それ知ってたら作業速くなるじゃん!」という視点でまとめています。初心者から中級者の方まで、「これは使える!」と思えるテクニックばかりなので、ぜひ最後までご覧ください。
複数のモジュールを1行でまとめてimport
import os, sys, re
複数行にわけて書いていたimportも、コンマ区切りで1行にできます。小規模なスクリプトや簡単なツールを書くときには便利です。
ただし、可読性を優先する場面では使いすぎに注意。
as句で名前を短縮して省エネコーディング
import numpy as np
import pandas as pd
長いモジュール名を短縮できるのがas
句。
これは単なる文字数削減以上に、タイピング疲れと見やすさの両方に効果的です。
from構文でピンポイントimport
from math import sqrt, pi
モジュール全体ではなく一部の関数や定数だけを使いたいときはこれが最適。
無駄なメモリ使用を抑えるだけでなく、コードの意図も明確になります。
import時に関数名を変更して競合回避
from math import sqrt as math_sqrt
from numpy import sqrt as np_sqrt
複数のモジュールに同名関数がある場合は、as
で名前を変更して衝突を避けましょう。
これはエラー防止だけでなく、どの関数を使っているのかを明示する効果もあります。
動的importで軽量な起動を実現
import importlib
requests = importlib.import_module('requests')
実行時に必要なときだけモジュールを読み込む「動的import」。
これにより初期起動を高速化したり、条件によってモジュールを切り替える柔軟なコードが書けます。
相対import vs 絶対importの最適な使い分け
# 絶対import
from myproject.module.sub import util
# 相対import
from ..sub import util
小規模なプロジェクトでは相対import、大規模な開発では絶対importが推奨されます。
特に相対importは、依存関係が明確になるという利点がありますが、パスの管理が煩雑になるため注意が必要です。
モジュールの再読み込み(開発中に超便利)
import importlib
importlib.reload(my_module)
JupyterやREPLなどでモジュールの中身を変更した場合、再importだけでは反映されません。reload()
を使えば、キャッシュされている内容を再読込して反映できます。
init.py でサブモジュールをまとめてimport
# __init__.py に以下を記述
from .core import Engine
from .utils import Logger
パッケージのトップレベルで複数のモジュールをまとめたいときに有効。
ユーザーは単にimport mypackage
だけで中のクラスや関数にアクセスできるようになります。
importの順序ルールで読みやすさアップ
PEP8では以下の順でimportを書くことが推奨されています。
1. 標準ライブラリ
2. サードパーティ製ライブラリ
3. 自作モジュール(ローカル)
例:
import os
import sys
import numpy as np
import pandas as pd
from myproject.utils import helper
このルールを守ると、可読性が大幅に向上し、レビューもしやすくなります。
all で公開する関数を明示
# mymodule.py
__all__ = ['func_a', 'ClassB']
from mymodule import *
としたときに、importされる要素を制御できます。
これは、他の開発者に「使ってほしい機能だけ」を伝える意図を持たせるためにも重要です。
まとめ|importは“書き方”でここまで変わる
Pythonのimport文は、ただの準備コードではありません。
ちょっとした工夫で保守性・実行速度・開発効率を大きく改善できるのです。
今回紹介した10個の裏技を使えば、日々のコーディングがもっとスムーズになり、バグや混乱を減らすことができます。
ぜひ自分のプロジェクトに取り入れて、「書きやすく、読みやすく、速くなる」Python開発を実感してみてください。
コメント