PyQtを使用していますが、この問題が発生しています。私のインポートステートメントが:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
次に、pylintは何百もの「未使用のインポート」警告を出します。実際に表示するのに役立つ他の未使用のインポートが存在する可能性があるため、これらをオフにすることをためらっています。別のオプションはこれを行うことです:
from PyQt4.QtCore import Qt, QPointF, QRectF
from PyQt4.QtGui import QGraphicsItem, QGraphicsScene, ...
qtGuiラインには9つのクラスがあります。 3つ目のオプションがあります。
from PyQt4 import QtCore, QtGui
次に、すべてのクラスの前にQtCoreまたはQtGuiを付けます。
この時点では、プロジェクトで最終的にどれを実行するかについてはわかりませんが、最後の方が私の観点から最も苦痛に思われます。ここでの一般的な方法は何ですか?あるスタイルを他のスタイルよりも使用する技術的な理由はありますか?
あなたの質問のタイトルへの答えは「はい」です。私はfrom ... import *
を使用しないことをお勧めします。その理由については、最近の別の回答で説明しました。簡単に言うと、修飾名はgoodであり、ベアネームは非常に限られているため、「3番目のオプション」は、提示するものの中で(ベアネームではなく修飾名を使用するため)最適です。
(ベアネームに対する修飾名の利点には、テスト目的での偽造/モックの容易さ、偶発的な再バインドによって引き起こされた気付かれないエラーの無効化リスクへの低減、ロギングの目的で「トレースクラス」のトップネームを「偽造」する機能が含まれます。プロファイリングなどのアクティビティを使用して緩和しているものを正確に説明します-デメリット、まったくなし... ZenのPythonの最後ではありますが、最も重要ではない_import this
を参照してください。インタラクティブインタープリタープロンプト)。
同様に、QtCore.whatever
と言うために7文字追加するのを嫌がる場合は、省略して-from PyQt4 import QtCore as Cr
およびfrom PyQt4 import QtGi as Gu
(次にCr.blah
およびGu.zorp
を使用)またはなど。すべての略語と同様に、簡潔さと明快さの間のスタイルトレードオフです(変数にcount_of_all_widgets_in_the_inventory
、num_widgets
、またはx
と名前を付けますか?多くの場合、真ん中の選択が最善ですが、常にそうとは限りません;-)。
ところで、私は1つのas
またはfrom
ステートメントで複数のimport
句を使用しないでください(混乱を招く可能性があります)。インポートが問題を引き起こしている場合はデバッグし、将来インポートを変更した場合は編集します...)。
import *
の良い例もあります。すなわち。 Django開発者が多くの設定ファイルを持ち、インポートを使用してそれらをチェーンすることは一般的です*:
settings.py:
FOO = 1
BAR = 2
DEBUG = False
test_settings.py:
from settings import *
DEBUG = True
この場合、import *
のほとんどの欠点が利点になります。
Python doc は言う:
Although certain modules are designed to export only names that follow certain patterns when you use import *, it is still considered bad practise in production code.
副作用があり、デバッグが非常に困難になる可能性があります
個人的には、from import
ではなくimport
を使用しています。これは、ファイルの先頭に大きな宣言があり、コードが読みやすくなっているためです。
import PyQt4
PyQt4.QtCore
モジュール名が長すぎて、as
キーワードを使用してローカルで名前を変更できる場合。例えば:
import PyQt4.QtCore as Qc
それが役に立てば幸い
私は使用するPyQtモジュールに「インポート*」を使用していますが、独自のモジュールに配置しているため、ユーザーの名前空間を汚染しません。例えば.
Qt4.pyで:
from PyQt4.QtCore import * from PyQt4.QtGui import *
次に、このように使用します
import qt4 app = qt4.QApplication(...)
pyQt4のインポートは特殊なケースです。
時々私は迅速で汚いコーディングのために「最初のオプション」を選択し、コードがどんどん長くなるときそれを「2番目のオプション」に変えます。
名前空間の衝突は、ここでは大した問題ではないかもしれません。他のパッケージの名前が大きな「Q」で始まるのを見たことはありません。そして、私がPyQt4スクリプトを終了するたびに。 「PyQt4.QtGuiインポート*から」をsthに変換します。お気に入り "
from PyQt4.QtGui import (QApplication, QDialog, QLineEdit, QTextBrowser,
QVBoxLayout)
"参考までに、 複数行インポートの括弧 はここで便利です。
一般的な場合、import *
には絶対に反対します。 PySide2
の場合、まれな例外の1つが適用されます。
from PySide2 import *
PySide2
からすべての既知のモジュールをインポートするパターンです。このインポートは常に正しいため、非常に便利です。定数はCMAKE
ジェネレーターから計算されます。インタラクティブコンソールだけでなく、自動テストでもすばやく何かを試すときに非常に役立ちます。
高度な使用法では、この機能を実装するPySide2.__all__
変数を直接使用することも意味があります。 PySide2.__all__
の要素は依存関係によって順序付けられているため、最初にQtCore
、次にQtGui
、QtWidgets
などと続きます。