Modules & Packages

3643 ワード

Modules?


  • Pythonで変数、関数、クラスなどのファイルを収集します.

  • 理由は.コードが大きすぎると、他のファイルで繰り返し使用できません.
    このようにして作成されたモジュール
    import <modeule name>
    使えばいいです.しかし、モジュールのサイズが大きすぎて、モジュールで特定の関数を使用するだけで、
    from <module name> import <fuction name>
    をクリックしてインポートします.
  • Packages?


  • moduleと同様に、他のファイルからロードおよび使用されるコード、またはmoduleよりも複雑なコードです.

    これでfrom core import model
    coreというパッケージのモデルモジュールからインポートし、他のPythonファイルで使用できます.
    このパッケージの概念はLibraryと言える.このクラスは以下の通りである.

  • Python標準ライブラリ:インストールなしで使用できるパッケージ(ex.time、sys、os)

  • Pythonインストールパッケージ:インストール後に使用するパッケージ(Ex.Django,Beautifulsgroup)

  • ユーザーが作成したパッケージ
  • Pythonは、これらのモジュール/パッケージを以下の順序で参照します.
    1. sys.modules
    2. built-in modules
    3. sys.path

    1. sys.modules

  • Pythonモジュールまたはパッケージの優先位置を探します.
  • sys.モジュールは簡単な辞書です.また、インポートしたモジュールとパッケージが格納されています.
  • dict構造です.
  • 2. built-in modules

  • bulit-in単語のように、Pythonが提供する公式ライブラリとPython標準ライブラリが適用されます.
  • 3. sys.path


  • sys.pathはstring Valueのlistであり、packageのinit変数などである.

    /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9
    似たような要素が表示された場合は、それぞれパスが表示されます.
    インポートするパッケージがパスにあることを確認します.
    上の順番でPythonはsysです.modules -> built-in modules -> sys.pathでmoduleとpakageを検索し、sysします.pathにもない場合は、モジュールが見つからないerrを返します.
  • sys.モジュールとシステム。パスの違いは?

  • まず資料型が異なるsys.modulesはdictタイプで、module/packageと各パス、sysを使用します.pathにはmodule/packageをlist形式でインストールするディレクトリがあります.
  • Pythonはsysmoduleをどのように位置決めしますか?

  • の上の写真からsysを見ます.pathとsys.import sysを出力してmoduleを検索します.

    sysの表示:
    見えます.
    すなわちsysはbuild-inモジュールパスをインポートするので、他のパスを別途書く必要はありません.
  • Absolute pathと相対path


    sysなどの内蔵パッケージやpipでインストールされたDjangoなどのパッケージを直接インポートできます.
    ただし、localpackageを開発した場合は、そのpackageの場所に基づいてディレクトリパスを正しく宣言する必要があります.

    たとえば、上記のパスでtestというディレクトリのpackage 1のcalculaterというモジュールにaverageという関数をインポートする場合は、
    from test.package1.calculater import average
    このコードで書けばいい
    この経路をAbsolute Pathと呼ぶ.
    ただし、上のディレクトリよりも複雑なパスであれば、パスが長すぎます.
    このときはRelative Pathを使用します.
    相対パスは、最上位のファイルではなくimport機能を使用する現在の場所に基づいています.

    たとえばpackage 1>calculaterからcal 2モジュールの関数をインポートする場合は、
    現在のパスはpackage 1にあります.
    from .package2.cal2 import function
    これでコードを書けばいい後ろから.(点記号)は現在の位置を表します.
    今は自分で包装を作ります