2016-09-26 11 views
0

これは主観的な質問かもしれないので、シャットダウンすると分かりますが、これはもっと深刻な方法で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モジュールではないと言うことができます)、既にスクリプトに含まれているモジュールを使用して、

答えて

1

これはかなり広い質問ですが、私はそれを簡潔に答えようとします。

実際のベストプラクティスはありませんが、他人が既に書いたコードをリサイクルすることは、一般的には良い考えです。インポートされたコードにバグが見つかった場合は、作成者にチケットを提出して、多数の人のために修正することができますので、自分のコードでバグを発見するよりも有益です。

追加のインポートを行う際には、主にPython標準ライブラリの一部ではない場合があります。
時には少し魔法のパッケージに追加すると、何か起こっていることを理解するために誰かが調べなければならない別のライブラリやファイルであるため、コードを理解しにくくなります。第三者図書館ほど洗練されていますが、関係なく仕事を終えてください。

追加輸入をしなくても逃げることができれば、おそらく、それはあなたにかなりの時間と頭痛を救うことができれば、おそらくあなたが問題を処理するためにあらかじめ書かれたものをインポートする価値があります。直面している。

継続的な検討が必要です。

+0

大量のインポートには実際の計算コストは​​ありますか?私はpythonがどうやってそれを正確に処理するのか分かりませんが、おそらくメモリにロードされているように見えます。 –

+0

Pythonは、PYTHONPATHまたは現在の作業ディレクトリでインポートするものを見つけようとすると、そのファイルを読み取り、完全に実行します。これにより、多くのオブジェクト(主に関数、定数など)が作成され、メモリに格納されます。だから、いくつかのメモリとディスクのオーバーヘッドがありますが、非常に限られたシステムで作業しているのでなければ、非常に小さく、心配はありません。 –

関連する問題