私自身の個人的なPythonライブラリでは、次のようなことがよくあります。
class MyClass:
# ...
def plot(self):
import someGraphicsLibrary as graphicslib
graphicslib.plot(self.data)
その理由は、初期化にsomeGraphicsLibrary
は時間がかかり、使用するライブラリの1つでは数秒かかるためです。このクラスを使用するときは常に結果をプロットする必要はありません。そのため、実際に使用されるまではインポートしないのが理にかなっています。
これは正常に動作するようですが、他の人のコードでは見たことがないと思います。だから私の質問は、これが良い習慣と考えられるかどうかです。このように物事を行うときに予想される隠れた落とし穴はありますか?
1
これは単にレイジーローディングの一種であり、それほど特別ではありません。
—
Doc Brown、
おそらく少し醜いことを除けば、これを行うことができなかった本当の理由はありません。ライブラリのインポートに時間がかかる場合は、正当な理由があります。私はこれをめったに行わないようにします。ほとんどのインポートがこれほど遅くなることはありません。
—
Neil
@DocBrownそれが特別であると言っているのではなく、Pythonで特に良い/悪い習慣と見なされているかどうかを尋ねるだけです。
—
ナサニエル
@Nathaniel:多くの開発者の間で絶対的な「ベストプラクティス」の存在を信じている迷信的な信念があるようです-これはIMHOのナンセンスであり、「プラクティス」には長所と短所があり、何が良いか悪いかは特定のものでしか評価できません環境。上記の例は私には理にかなっているように見えますが、それは単純明快であり、唯一の本当の欠点は、モジュールのすべての依存関係を一目で確認することが難しくなることです(これはKevinの回答のポイント3です)。したがって、パフォーマンスの改善が面倒な価値があると考える場合、この方法は適切です。そうでない場合、この方法は悪いです。
—
Doc Brown、