Python でよくある、適切に作成されたライブラリがある場合は、それをインポートしてそのまま使用する必要があります。適切に作成されたライブラリは、独自の生命と言語を使用する傾向があり、その結果、ライブラリを参照することはめったにない読みやすいコードになります。ライブラリが適切に作成されている場合、名前の変更などを頻繁に行う必要はありません。
import gat
node = gat.Node()
child = node.children()
このように書くことができない場合や、インポートしたライブラリから何かを降ろしたい場合があります。
from gat import Node, SubNode
node = Node()
child = SubNode(node)
インポート文字列が 80 列をオーバーフローする場合、多くのことに対してこれを行うことがあります。これを行うことをお勧めします。
from gat import (
Node, SubNode, TopNode, SuperNode, CoolNode,
PowerNode, UpNode
)
最良の戦略は、これらすべてのインポートをファイルの先頭に保持することです。できればアルファベット順に、最初に import -statements、次に from import -statements に並べます。
ここで、なぜこれが最良の慣習であるかを説明します。
Python には、グローバル名前空間から値が見つからない場合に、メインのインポートから値を探す自動インポートが完全に含まれていた可能性があります。しかし、これは良い考えではありません。その理由を簡単に説明します。単純なインポートよりも実装が複雑であることを除けば、プログラマーは依存関係についてあまり考えず、インポートを調べる以外の方法でインポートした場所を見つける必要があります。
依存関係を見つける必要があることが、人々が "from ... import *" を嫌う理由の 1 つです。ただし、opengl -wrappings など、これを行う必要があるいくつかの悪い例が存在します。
したがって、インポート定義は、プログラムの依存関係を定義するものとして実際に価値があります。それはあなたがそれらをどのように利用すべきかです。それらから、奇妙な関数がどこからインポートされているかをすばやく確認できます。