2016-09-14 8 views
2

モジュールをインポートする際にベストプラクティスに固執しようとしていますが、これについてPEP8が何を言っているのか理解しようとしています。PEP8のインポート規則

私のフレームワークは100のクラスと数十のパッケージを持っているとしましょう。例えば、PyQt5やsympyは良い候補になるでしょう...このセットの中で何が最良の選択でしょうか?

a)にインポートし、すべて

from PyQt5.QtCore import * 
from PyQt5.QtGui import * 
from PyQt5.QtWidgets import * 

print(QPoint) 
print(QPixmap) 
print(QApplication) 

b)の輸入だけ大きなパッケージとアプリケーション全体

from PyQt5 import QtCore, QtGui, QtWidgets 

print(QtCore.QPoint) 
print(QtGui.QPixmap) 
print(QtWidgets.QApplication) 

C)大きなパッケージから特定のクラスをインポートするために接頭辞を使用して

from PyQt5.QtCore import QPoint 
from PyQt5.QtGui import QPixmap 
from PyQt5.QtWidgets import QApplication 

print(QPoint) 
print(QPixmap) 
print(QApplication) 

オプションa)はPEP8によって推奨されません。b)またはc)について... PEP8の勧告は何ですか?

+1

個人的には、b)モジュールから複数のオブジェクトを使用している場合は、a)を優先します。しかし、PEP 8にはそのルールはありません。 –

+1

具体的な答えはありません。各モジュールから少数のオブジェクトだけを使用する予定の場合は、(c)のように明示的にインポートします。各モジュールのオブジェクトをたくさん使用する場合は、通常(b)を使用します。 – Blender

+1

状況によって異なります。 (a) - インタラクティブなセッションで試してみると、私は 'from PyQt5 import Qt'を使うことを好みます(これは* 1つの名前空間内のすべて*)。私は、コーディングの実践がpep8とよく似ているかどうかは特に気にしない(私は彼らが主にそうだと思うが)。 pep8が言いたい最も重要なことは、「いつ矛盾するかを知る - 時にはスタイルガイドの推奨事項が適用されない場合があります。 – ekhumoro

答えて

0

あなたのプロジェクトに多すぎることがあり、名前衝突の可能性があるため、お勧めできません。 QPointオブジェクトを持っていない場合は(必要に応じてQPointシンボルのみを読み書きする方が簡単かもしれません)

しかし、あなたが将来的にもQPointを提供して別のパッケージと対話する必要があり、あなたは彼らの親パッケージを経由してそれらを参照、または次のコードでPyQt5Pointを参照する前にfrom PyQt5.QtCore import QPoint as PyQt5QPoint構文を使用するのいずれかが必要になります。