Pythonバッグ

3629 ワード

1.モジュール
  • モジュールはpythoコードを含むファイルであり、接尾辞名はYESである.pyでいい、モジュールはpythonファイル
  • モジュールを使用する理由
  • プログラムが大きすぎて、作成・メンテナンスが非常に不便で、分割が必要
  • モジュールがコード再利用を増やすことができる方式
  • ネーミングスペースとして使用し、ネーミング競合を回避
  • モジュールの定義方法
  • モジュールは普通のファイルなので、どんなコードでも直接書くことができます
  • ただしモジュールの仕様により、以下の内容をブロックに記述することが望ましい
  • 関数(単一機能)
  • クラス(類似機能の組合せ、または類似業務モジュール)
  • テストコード

  • モジュールの使い方
  • モジュール直接導入
  • モジュール名が直接数字で始まる場合は、importlibヘルプが必要
  • 文法import module_name module_name.function_name module_name.class_name
  • ケース01,02,p 01,p 02
  • importモジュールas別名
  • 導入と同時にモジュールに別名を付ける
  • 残りの使い方は1つ目と同じ
  • ケースp 03
  • from module_name import func_name, class_name
  • 上記の方法で選択的に導入
  • 使用時にインポートしたコンテンツをそのまま使用でき、接頭辞は不要
  • ケースp 04
  • from module_name import *
  • 導入モジュール全内容
  • ケースp 05

  • if __name__ == "__main__の使用
  • モジュールコードの導入時に受動的に実行される問題を効果的に回避できる
  • 希望するプログラムのエントリはすべてこのコードをエントリとすることを推奨する

  • 2.モジュールの検索パスとストレージ
  • モジュールの検索パスとは:
  • モジュールをロードすると、そのモジュールを探しています
  • システムデフォルトのモジュール探索経路
      import sys
      sys.path           
      #    p06.py
    
  • 検索パス追加
       sys.path.append(dir)
    
  • モジュールのロード順
  • 上検索メモリに既にロードされているモジュール
  • pythonの内蔵モジュールを検索
  • 検索sys.Pathパス

  • パッケージ
  • パッケージは組織管理コード方式であり、パッケージにはモジュールが格納されている-モジュールを含めるためのフォルダがパッケージである
  • カスタムパッケージの構成
  •     |--- 
        |---|--- __init__.py        
        |---|---   1
        |---|---   2
        |---|---   (    )
        |---|---|--- __init__.py        
        |---|---|---     1
        |---|---|---     2
    
  • パケットのインポート操作
  • import package_name
  • 直接1つのパッケージを導入する、initを使用することができる.pyの内容
  • 使い方:
      package_name.func_name
      package_name.class_name.func_name()
    
  • この方式のアクセス内容は
  • ケースpkg 01,p 07.py

  • import package_name as p
  • 具体的な用法・作用方式は、上記単純導入と一致
  • この方法はinitに対してデフォルトであることに注意する.pyコンテンツのインポート
  • import package.module
  • インポートパッケージのいずれかの具体的なモジュール、
  • 使い方
      package.module.func_name
      package.module.class.fun()
      package.module.class.var
    
  • ケースp 08.py

  • import package.module as pm

  • from ... importインポート
  • from package import module1, module2, module3, .....
  • この導入方法は実行しない__init__の内容
      from pkg01 import p01
      p01.sayHello()
    
  • from package import *
  • 現在のパッケージのインポート__init__.pyファイル内のすべての関数とクラス
  • 使い方
      func_name()
      class_name.func_name()
      class_name.var
    
  • ケースp 09.py,注意このインポートの具体的な内容

  • from package.module import *
  • パッケージで指定されたモジュールのすべてをインポート
  • 使い方
      func_name()
      class_name.func_name()  
    
  • 開発環境ではよくあるので他のモジュールを使って、現在のパッケージに他のモジュールの内容を直接導入できる
  • import完全なパッケージまたはモジュールの経路
  • __all__の使い方
  • from package import*を使用している場合、*導入可能なコンテンツ
  • __init__.pyでファイルが空の場合、またはない場合__all__であれば、__init__の内容のみを導入できる
  • __init__・・__all__の値が設定されている場合は__all__指定されたサブパッケージまたはモジュールに従ってロードするとロードされない__init__の内容
  • __all__=['module1', 'module2', 'package1'.........]


  • ネーミングスペース
  • 異なる位置の異なる機能を区別するための同じ名称の関数または変数の特定のプレフィックス
  • ネーミング衝突防止作用
      setName()
      Student.setName()
      Dog.setName()