[解決済み] Pythonのモジュールとライブラリの違いは何ですか?
質問
私はJavaのバックグラウンドを持っていますが、Pythonは初めてです。私は先に行く前に、私が正しくPythonの用語を理解していることを確認したい。
私の理解では モジュール は、多くのスクリプトによってインポートされることができるスクリプトであり、読書を容易にするために。ちょうどJavaでクラスがあり、そのクラスは他の多くのクラスによってインポートされることができるようなものです。
私の理解では ライブラリ です。ライブラリには多くの モジュール を含んでおり、その用途によって分けられています。
私の疑問は、ライブラリはパッケージのようなもので、たとえば
food
というパッケージがあります。
- chocolate.py
- スイーツ.py
- ビスカッツ.py
は
food
パッケージに含まれますか?
それともライブラリはパッケージを使用するのでしょうか?
drink
:
- milk.py
- juice.py
に含まれています。その
library
には2つのパッケージが含まれているのですか?
また、アプリケーションプログラミングインターフェース(API)は、通常、ライブラリのセットを含んでおり、これは階層の一番上にあります。
- API
- ライブラリ
- パッケージ
- モジュール
- スクリプト
つまり、APIは2~5のすべてで構成されるのですか?
どのように解決するのですか?
-
モジュール :
モジュールは、Pythonの定義とステートメントを含むファイルです。ファイル名はモジュール名に接尾辞として
.py
が付加されたモジュール名です。 -
パッケージ :
パッケージは、"ドット付きモジュール名 "を使ってPythonのモジュール名前空間を構造化する方法です。
のドキュメントを読むと
import
の文が詳細を与えてくれますが、例えば
Pythonは1種類の モジュールオブジェクト であり、すべてのモジュールはこの モジュールがPythonで実装されているか、Cで実装されているか、その他の言語で実装されているかにかかわらず、すべてのモジュールはこの型です。 で実装されているかどうかに関わらず、すべてのモジュールはこのタイプです。モジュールを整理し、名前付けの階層を提供するために、Pythonにはパッケージという概念があります。 Pythonはパッケージという概念を持っています。
パッケージはファイルシステム上のディレクトリ、モジュールはディレクトリ内のファイルと考えることができます。 モジュールをディレクトリ内のファイルと考えることができますが、このアナロジーをあまり文字通りにはとらないでください。 しかし、パッケージとモジュールはファイルシステムから発生する必要はないので、このアナロジーをあまり文字通りにとらないでください。 システムから発生する必要はないからです。このドキュメントでは、このディレクトリとファイルという便利な例えを使います。 このドキュメントでは、ディレクトリとファイルという便利なアナロジーを使います。ファイルシステム ディレクトリのように、パッケージは階層的に構成され、パッケージは通常のモジュールと同様にサブパッケージを含むことができます。 パッケージには通常のモジュールと同様にサブパッケージが含まれます。
覚えておくべき重要なことは すべてのパッケージはモジュールであるが を覚えておくことが重要です。別の言い方をすれば、パッケージはモジュールの特別な種類に過ぎません。 特別な種類のモジュールです。具体的には
__path__
属性を含むモジュールはパッケージとみなされます。
したがって、この用語は
module
は特定の実体を指しています。それは、インスタンスが
module
オブジェクトであるクラスです。また、類推により、これらのインスタンスが作成されるファイルシステム内のファイルを参照するために使用されます。
この用語は スクリプト という用語は、実行されることを目的としたモジュールを指すのに使われます。これは、"program" や "application" と同じ意味を持っていますが、それは は通常 と同じ意味であるが、通常、単純で小さなプログラム(つまり、せいぜい数百行からなる単一のファイル)を記述するために使用される。スクリプトを書くには数分から数時間かかります。
この用語は ライブラリ とは、単に多くのアプリケーションで使用できるように設計されたコードの束の総称です。これは、特定のアプリケーションで使用できるいくつかの一般的な機能を提供します。
モジュール/パッケージ/その他の何かが公開されたとき、人々はしばしばそれをライブラリと呼びます。多くの場合、ライブラリはパッケージまたは関連する複数のパッケージを含みますが、単一のモジュールである場合もあります。
ライブラリは通常、特定の機能を提供しません。つまり、ライブラリを実行することはできません。
APIは文脈によって異なる意味を持つことがあります。例えば
- のようなプロトコルを定義することができます。 DB API または バッファプロトコル .
-
は、アプリケーションとの対話の仕方を定義することができます(例えば
Python/C API
) - ライブラリ/パッケージに関連する場合、それは単にその機能(関数/クラス/定数などのセット)のためにそのライブラリによって提供されるインターフェイスです。
どのような場合でも、APIは ではなく python のコードではありません。それは、多かれ少なかれ形式的な記述です。
関連
-
[解決済み] -saveと-save-devの違いは何ですか?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] 億の相対的輸入
-
[解決済み] PythonモジュールとPythonパッケージの違いは何ですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】Angularコンポーネントとモジュールの違いとは?
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] ファブリック経由でデプロイユーザとしてvirtualenvを有効化する
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例