よく使うモジュールのimport文を
Python
1# default.py
2import os
3import sys
4import re
のようにdefault.pyにまとめ、これをほかのスクリプト(main.pyとします)から
Python
1# main.py
2from default import *
のようにまとめる方法は、以下のような点で少々難があると考えられます。あくまでも私の推測にすぎませんが、おそらくそのために、この方法はあまり利用されないのでしょう。
##ワイルドカードのimport文による名前の混乱
PythonコードのスタイルガイドであるPEP 8には、以下のように定められています。
Wildcard imports ( from <module> import * ) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools.
この記述を今回の例に当てはめると、from default import *
というワイルドカードのimport文のために、main.pyの名前空間にどんな名前が存在するのか、default.pyを読まない限りわからなくなります。そうすると、main.pyでなにか新しい変数や関数などの名前を定義するたびに、いちいちdefault.pyを参照して名前の衝突を防がなければならなくなります。また、統合開発環境でmain.pyを編集するときに、default.pyにおけるimport文にまでたどり着けず、うまく補完が働かなくなるかもしれません。さらに、ツールでmain.pyを機械的に処理する場合にも、何らかの問題が生じるおそれがあります。
##余分なimport文による時間の浪費
上述の問題ほど大きな影響はないかもしれませんが、次のような難点も考えられます。default.pyに列挙したモジュールについて、必ずしもそれらすべてが、main.pyで利用されるとは限りません。しかしながらmain.pyでfrom default import *
を行ってしまうと、利用しないモジュールまでもがimport処理されるおそれがあります(実際の挙動は確認していません)。そうすると、不要なモジュールに対して処理を行った分だけ時間を浪費することになります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/03 13:19