-2

私は python のドキュメントと の意味に関する多くの情報源を読んでいましたが、package, library, module and scriptいくつかを得て、それが基本的な質問であることは知っていますが、それらの違いを知ることは紛らわしく、非常に重要です。これは基本的な質問であることは承知していますが、反対票を投じないでください。これは他の人にも役立つはずです。

パッケージ : __init__.pyファイルを含む

Module : Python コードで構成される Python ファイル

混乱することなく、誰でも簡単に説明できますか。

4

3 に答える 3

0

スターターにこれはどうですか:

モジュールは通常、Python コード (つまりscript )の一部であり、最上位の PVM (つまり を使用) によって解釈/実行されるのではなく__name ='__main__'、呼び出し元のスクリプトからインポートされます。したがって、モジュールからの定義は、独自の名前空間に存在します。

これは言い換えれば、スクリプトのいずれかがコードの他の部分からインポートされ、モジュールとして機能する可能性があることを意味します。

于 2012-07-26T05:15:15.447 に答える
0

それらはすべて基本的に同じことを意味し、Python コードを含むファイルまたはファイルのセットであり、Python はそれらの区別を透過的に行うため、重要性が低くなります。しかし、それらは少し異なる意味を持っています。

「スクリプト」は主に実行されることを意図した .py ファイルであり、「ライブラリ」は主に別のスクリプトによってインポートされることを意図した .py ファイルです。ただし、1 つの .py ファイルをスクリプトとライブラリの両方として記述することができます。timeit モジュールは、そのようなスクリプト/ライブラリの二重性の例です。timeit モジュールをコマンド ラインから実行すると、マイクロ ベンチマークする Python コードを含むコマンド ライン引数が必要になります。ただし、timeit モジュールをマイクロ ベンチマーク関数または評価/実行対象の文字列にインポートすることもできます。

モジュールは、主にインポートすることを意図しているという点でライブラリと同じですが、ファイルが実行可能 (したがってスクリプト) であるかインポート可能であるか (つまり、スクリプト) を必ずしも暗示することなく、.py ファイルを参照するためにモジュールという単語を使用することがあります (したがって、ライブラリ)。ファイルを実行するためのものなのか、インポートするためのものなのかわからない場合に使用する方が安全な言葉です。または、ファイルの性質をあまり重視したくない場合。または、インポート用の実行可能スクリプトとライブラリの両方を含むファイルのコレクションを参照する場合。そういう意味ではよりニュートラルな言葉です。

Package はa folder containing an __init__.py、少なくとも 1 つ以上の他の .py ファイルを具体的に参照します (技術的には、init .py のみを含むフォルダーもパッケージですが、単一の .py モジュールに変換する必要があります)。したがって、パッケージはモジュール/ライブラリよりも上位の階層です。

于 2012-07-26T05:19:02.603 に答える
0

非常に基本的な説明が必要だと思います。

自分で書いているものすべてをスクリプトと呼ぶことができます。

スクリプトにインポートしているものはすべて、モジュールとして呼び出すことができます。また、スクリプトファイルにKlausが述べたように__init__.py、スクリプトファイルに含まれていないことを考慮して、スクリプトをpythonパスにあり、その中にファイルを含むディレクトリに配置することにより、スクリプトをインポート可能なモジュールとして作成できることを忘れないでください。これで、Lie が述べたように、このディレクトリをパッケージ__name='__main__'として呼び出すことができます。

別の表現 -パッケージまたはライブラリは、pypi またはその他の git リポジトリで利用可能なソース ファイルのセットであり、ローカルの Python バージョンに対してビルドおよびインストールでき、スクリプトでモジュールとしてインポートできます。

全体として、スクリプトを作成し、同じパッケージ(ライブラリ)を作成し、それをpypiでホストし、pipを使用してpythonにダウンロードしてインストールし、モジュールとして別のスクリプトにインポートできます。

于 2012-07-26T05:43:40.663 に答える