Python 3ベース(八)モジュール

4033 ワード

プログラムで関数を定義すると、コード再利用が可能になります.しかし、コードが膨大になると、より簡単に維持できるように、いくつかのファイルに分割したい場合があります.同時に、1つのファイルに書かれたコードを他のファイルで再利用したい場合は、モジュール(module)を使用する必要があります.
一、モジュールのインポート
Pythonでは、.pyファイルがモジュールを構成します.1つのモジュールの定義は、別のモジュールまたはメインモジュールにインポートできます.
たとえば、モジュールplatformを内蔵することで、現在のオペレーティングプラットフォーム情報を表示できます.
import platform
s = platform.platform()
print(s)
#     :Linux-3.15.8-200.fc20.x86_64-x86_64-with-fedora-20-Heisenbug
また、例えば、組み込みモジュールtimeを使用して現在の時間を取得できます.
import time
s = time.ctime()
print(s)
#   :Mon Aug 18 16:04:57 2014

各モジュールにはプライベートなシンボルテーブルがあり、モジュール内でグローバルシンボルテーブルとして使用されます.モジュールを現在のモジュールにインポートすると、インポートされたモジュールの名前だけが現在のモジュールのグローバルシンボルテーブルに格納されるので、変数名の競合を心配する必要はありません.
その他のインポート方法:
1、import a as b:モジュールaをインポートし、モジュールaの名前をbに変更します.
import time as x   
s = x.ctime()
print(s)

2、from a import func:モジュール内の関数または変数の名前を現在のモジュールシンボルテーブルに直接インポートします.
from time import ctime
s = ctime()   #           ,      time.ctime()
print(s)
3、 from a import *:現在のモジュールシンボルテーブルに、モジュール内のすべての名前(下線で始まる名前を除く)をインポートします.
from time import *
s = ctime()   
print(s)

注意:*をインポートするのはよくありません.読みにくいコードが発生し、名前の競合が発生しやすいためです.
二、モジュール探索経路
aという名前のモジュールをインポートすると、インタプリタはまず組み込みモジュールからマッチングを試み、見つからない場合はsys.pathに記録されたすべてのディレクトリでa.pyファイルを検索し、sys.pathは以下を含む.
  • 現在のプログラムが存在するディレクトリ
  • 標準ライブラリのインストールディレクトリ
  • オペレーティングシステム環境変数PYTHONPATHに含むディレクトリ
  • 変数sys.pathは、解釈器にモジュールの検索パスを指定する文字列リストです.環境変数PATHONPATHによってデフォルトパスに初期化され、PYTHONPATHが設定されていない場合は組み込みデフォルト値を使用して初期化されます.標準リスト操作で変更できます.
    >>> import sys
    >>> sys.path.append('/ufs/guido/lib/python')

    三、モジュールの__name__
    いずれのモジュールについても、モジュールの名前はグローバル変数__name__によって得ることができる.
    import time
    s = time.__name__
    print(s)    #   time 
    モジュールは、他のモジュールでインポートして使用することも、スクリプトとして直接実行することもできます.違うのは、他のモジュールにインポートすると、_name__の値はインポートされたモジュールの名前です.スクリプトとして実行すると、_name__の値を
    “__main__”:
    # test.py
    if __name__ == '__main__':
    	print('This program is being run by itself')
    else:
    	print('I am being imported into another module')
    をスクリプトとして実行します.
    $ python test.py 
    This program is being run by itself
    はインポートモジュールとして使用されます.
    >>> import test
    I am being imported into another module
    >>> 

    四、dir()関数
    Python 3ベース6では、dir()関数を内蔵することで、クラスまたはオブジェクトのすべてのプロパティを問い合わせることができます.また、モジュールに定義されているすべての名前をリストし、整列文字列のリストを返すこともできます.
    >>> import builtins
    >>> dir(builtins)

    五、バッグ
    複数のモジュール、すなわち複数をpyファイルは、同じフォルダに配置され、パッケージを構成します.例:
    sound/                             
          __init__.py                       
          formats/                        
                  __init__.py
                  wavread.py
                  wavwrite.py
                  aiffread.py
                  aiffwrite.py
                  auread.py
                  auwrite.py
                  ...
          effects/                      
                  __init__.py
                  echo.py
                  surround.py
                  reverse.py
                  ...
          filters/                       
                  __init__.py
                  equalizer.py
                  vocoder.py
                  karaoke.py
                  ...

    注:各パッケージフォルダには1つの__が含まれている必要があります.init__.pyのファイル、Pythonに教えて、このフォルダは1つのパッケージです.init__.pyは空のファイルであってもよい.
    パケット内のサブモジュールをimport . でインポートできます.たとえば、次のようにします.
    import sound.effects.echo
    もちろん、ご利用いただけますfrom... import...文インポートパッケージのモジュール:
    from sound.effects import echo               #   echo   
    from sound.effects.echo import echofilter    #   echo          
    from sound.effects import *                  #   __all__         

    個人サイト:http://songlee24.github.com
    転載先:https://www.cnblogs.com/songlee/p/5738115.html