モジュール、カスタムモジュール

モジュール

  1. 定義:モジュールがPYファイルです。このモジュールは、集約関数に似て似たような機能の多くを保存します。

  2. モジュールカテゴリ:

    • 内蔵モジュール
    • サードパーティ製のモジュール
    • カスタムモジュール
  3. インポート

    • インポートインポートの意味します
  4. 三つの実現への最初のモジュール

    • メモリにファイルをロードするTbjx.py。
    • メモリ内の名前の名前空間を作成するTbjx。
    • らは、名前tbjx名前空間によってモジュール(等変数と関数名、クラス名)の名前を参照します
  5. これは、別のモジュールの名前空間に導入され、

    坑:通过tbjx.的方式引用此模块的名字时,一定一定是从此模块中寻找.
    
    通过import 引用模块 他有自己的独立名称空间,与当前执行文件没有关系.
    
    name = '李业'
    print(tbjx.name)
    
    def read1():
        print('in 02 模块import')
    
    tbjx.read1()
  6. モジュールの別名ので、

    • 利点は、モジュール名が使いやすい、非常に短い変わっ非常に長くなることができます。

      import tbjx as t
      t.read1()
    • これは、コードの拡大と最適化を助長しています。

      #mysql.py
      def sqlparse():
          print('from mysql sqlparse')
      #oracle.py
      def sqlparse():
          print('from oracle sqlparse')
      #test.py
      db_type=input('>>: ')
      if db_type == 'mysql':
          import mysql as db
      elif db_type == 'oracle':
          import oracle as db
      db.sqlparse()
  7. 複数のモジュールを導入

    一つのファイルでは、複数のモジュールをインポートし、推奨される文言はインポートです。

    import os,sys,json   # 这样写可以但是不推荐
    
    推荐写法
    
    import os
    import sys
    import json

二、から...インポート...

  1. ...輸入使用して...

    from ... import ... 的使用示例。
    
    from tbjx import name, read1
    print(name)
    read1()
    '''
    执行结果:
    from the tbjx.py
    太白金星
    tbjx模块: 太白金星
    ​
    '''
  2. インポートと比較して...から...インポート

    唯一の違いは、次のとおりです。tbjx:から...インポートスパムの使用...直接現在の名前空間に名前に吸い込まれ、その現在の名前空間は、接頭辞を追加することなく、それに名前を使用します。

    インポート...道から...私たちは長所と短所を持っています

    利点:使いやすいです

    短所:簡単に現在実行中のファイル名と競合

    例は示しています。

    実行可能ファイルの変数や関数名と同じ名前のモジュールは、カバレッジがあるでしょう。

    name = 'oldboy'
    from tbjx import name, read1, read2
    print(name)  
    '''
    执行结果:
    太白金星
    '''
    ----------------------------------------
    from tbjx import name, read1, read2
    name = 'oldboy'
    print(name)  
    ​
    '''
    执行结果:
    oldboy
    ​
    '''
    ----------------------------------------
    def read1():
        print(666)
    from tbjx import name, read1, read2
    read1()
    ​
    '''
    执行结果:
    tbjx模块: 太白金星
    '''
    ----------------------------------------
    ​
    from tbjx import name, read1, read2
    def read1():
        print(666)
    read1()
    ​
    '''
    执行结果:
    tbjx模块: 666
    '''

    現在の場所に直接READ1とREAD2のような、実行、まだtbjx.pyグローバルネームスペースファイル

    #测试一:导入的函数read1,执行时仍然回到tbjx.py中寻找全局变量 'alex'
    #test.py
    from tbjx import read1
    name = 'alex'
    read1()
    '''
    执行结果:
    from the spam.py
    spam->read1->name = '太白金星'
    '''
    ​
    #测试二:导入的函数read2,执行时需要调用read1(),仍然回到tbjx.py中找read1()
    #test.py
    from tbjx import read2
    def read1():
        print('==========')
    read2()
    ​
    '''
    执行结果:
    from the tbjx.py
    tbjx->read2 calling read
    tbjx->read1->tbjx 'barry'
    '''
        4.3.3 也支持as
    
    通过这种方式引用模块也可以对模块进行改名。
    
    from tbjx import read1 as read
    read()
  3. ラインの複数の導入

    from tbjx import read1,read2,name
  4. ...インポート*

    名前の先頭にすべてtbjxないアンダースコア(_)での迷惑メールのインポート*から現在の位置にインポートされます

    *インポートする何名かわからないので、ほとんどの場合、当社のpythonプログラムは、この方法をインポートするために使用すべきではない、名前が定義されている前に上書きされる可能性があります。インタラクティブな環境にインポートする際に、非常に貧しい可読性が、問題はありません。

    あなたは使用することができ、すべての tbjx.pyに(新しいバージョンをリリースするために使用される)のコントロール*、新しい行を

    __all__=['money','read1'] #这样在另外一个文件中用from spam import *就这能导入列表中规定的两个名字

第三に、二つの機能PYファイル

  1. :良いのpythonファイルを書くことは、二つの目的があり
    :(などこのようなシミュレーションなど、あなたがそのブログのログインの庭の仕事を書く前に、)実行するスクリプト、ファイル全体のプログラムですが、
    II:山に保存されているモジュール、ファイル使用して、インポートする機能、私たちのためのpythonは、グローバル変数__name__、構築されたファイルをスクリプトとして実行されます。名前「と等しい主なファイルをモジュールとしてインポートされている場合:__モジュール名に等しいname__ #機能:へ異なるアプリケーションシナリオでの.pyファイルの実行制御、異なる論理(又はテストコード・モジュール・ファイル)





    if __name__ == '__main__':![img]
    print('from the tbjx.py')
    
    __all__ = ['name', 'read1',]
    
    name = '太白金星'
    
    
    def read1():
       print('tbjx模块:',name)
    
    
    def read2():
       print('tbjx模块')
       read1()
    
    
    def change():
    
       global name
       name = 'barry'
    
    if __name__ == '__main__':  
       # 在模块文件中测试read1()函数
       # 此模块被导入时 __name__ == tbjx 所以不执行
       read1()

第四に、モジュール検索パス

  1. モジュールパスを探します。メモリ---->内蔵モジュール--->のsys.pathで探して

    限り、これら三つの場所のように:のsys.path内蔵メモリモジュールは、モジュール参照パスで見つけることができ、このモジュールへの直接参照でなければなりません

  2. 手動で他のモジュールを参照するようにパスを追加

    sys.path.append(r'D:\ S23 \ day15' )

おすすめ

転載: www.cnblogs.com/cuixiaoying/p/11104814.html