2012-03-13 5 views
1

メイン言語でモジュール関数を単に使うのではなく、なぜPythonがモジュールを使用するのですか?これは非常に便利で、特に、ランダム、re、osなどの主要なものにとっては非常に簡単です。 Pythonがシンプルさとミニマリストを説くならば、なぜ余分なコード行を書く必要がありますか?なぜPythonはモジュールを使用しますか?

+3

プログラムによっては、これらのモジュールを使用する必要がない場合があります。なぜあなたはあなたのプログラムで、あなたは使用しないことを望むでしょうか? –

+0

これは本当ですが、多くのプログラムでre、os、またはrandomモジュールが使用されていますが、Pythonではあまり知られていない関数のほうがずっと少なくなっています。 – Billjk

+6

"名前空間は素晴らしいアイデアです。 - http://www.python.org/dev/peps/pep-0020/ – monkut

答えて

15

1)Python#19のZen:「ネームスペースは素晴らしいアイデアを抱いています。それ以上のことをしましょう!」

名前の付いたモジュールは、同じ名前の関数間で衝突する可能性がなくなるため、優れています。すべてが組み込みだった場合は、os.error()は(あなたがerror()と呼ばれる独自の関数を定義してみ禁止!と天国)

を組み込みint()機能とrandom.int()機能同上logging.error()と衝突するでしょう。後者はrandom_int()と書く必要があります。これは、モジュール構文と同じくらいのタイピングです。名前空間を明示的にしてモジュールを使用してみませんか?

これは、構文​​が悩んでいるのと同じ理由です。名前空間を汚染し、エキサイティングな名前衝突エラーの可能性があります。

2)組み込みコンポーネントとモジュールの概要は誰が決定しますか?

あなたが個人的に書くプログラムのほとんどはosreです。個人的に私が最後の3か月間に書いたすべてのスクリプトには、sqlite3,csvおよびloggingが含まれています。 Pythonプログラマーがこれまでに書いたすべてのプログラムの組み込み関数として組み込むべきでしょうか?

しばらくすると、あなたの組み込みリストはBen Hurよりも大きくなります。作成された

4

メモリと速度効率

オブジェクト(およびすべてがPythonでオブジェクトである)Pythonのインタープリタ・プロセスに割り当てられたメモリを占有します。モジュールをインポートすると、そのコードが実行され、多くのオブジェクト(関数、クラス、データなど)が作成されます。そのほとんどは、有用であるためにメモリ内に残る必要があります。機能を論理的に異なるモジュールに分けることで、プログラムは必要な機能を提供するオブジェクトにのみメモリを割り当てることができます。

すべてが組み込まれていれば、スタンダードライブラリ全体のクラス、関数、およびその他のオブジェクトすべてに費やされる膨大な量のメモリがあります。その1%未満が実際には平均的なプログラムにとって有益です。さらに、インタプリタが起動するたびに、これらすべてのオブジェクトを作成するすべてのコードを実行する時間を無駄にします。

+0

+1洞察力があります。 –

関連する問題