これは主観的な質問かもしれないので、シャットダウンすると分かりますが、これはもっと深刻な方法でPythonを学び始めて以来ずっと疑問に思っていました。別のモジュールをインポートするか、既存の呼び出しを実装する
タスクをよりきれいに達成するために追加のモジュールをインポートすることは、呼び出しを避けて「回避する」よりも優れているかどうかに関する一般的に受け入れられているベストプラクティスですか?
たとえば、最近私が作業していたスクリプトに関するフィードバックがありましたが、以下のコードをglob.glob()
呼び出しで置き換えることができたという提案がありました。当時私はこれを避けていました。なぜなら、それは私には不要なような別のインポートを追加することを意味していました(そして、私の思考プロセスに絡み合った行をフィルタリングする実際の流れ)。
headers = []
with open(hhresult_file) as result_fasta:
for line in result_fasta:
if line.startswith(">"):
line = line.split("_")[0]
headers.append(line.replace(">",""))
同様に、私はいくつかのファイルを移動するのではなくshutil
をインポートするためのスクリプトの後半os.rename()
コールを使用することにしました。
ここに正解がありますか?追加のモジュールを呼び出してより多くの依存関係を作成することに関連するオーバヘッドはありますか(例えば、モジュールがビルトインのPythonモジュールではないと言うことができます)、既にスクリプトに含まれているモジュールを使用して、
大量のインポートには実際の計算コストはありますか?私はpythonがどうやってそれを正確に処理するのか分かりませんが、おそらくメモリにロードされているように見えます。 –
Pythonは、PYTHONPATHまたは現在の作業ディレクトリでインポートするものを見つけようとすると、そのファイルを読み取り、完全に実行します。これにより、多くのオブジェクト(主に関数、定数など)が作成され、メモリに格納されます。だから、いくつかのメモリとディスクのオーバーヘッドがありますが、非常に限られたシステムで作業しているのでなければ、非常に小さく、心配はありません。 –