Python 3ベース(八)モジュール
4033 ワード
プログラムで関数を定義すると、コード再利用が可能になります.しかし、コードが膨大になると、より簡単に維持できるように、いくつかのファイルに分割したい場合があります.同時に、1つのファイルに書かれたコードを他のファイルで再利用したい場合は、モジュール(module)を使用する必要があります.
一、モジュールのインポート
Pythonでは、
たとえば、モジュールplatformを内蔵することで、現在のオペレーティングプラットフォーム情報を表示できます.
各モジュールにはプライベートなシンボルテーブルがあり、モジュール内でグローバルシンボルテーブルとして使用されます.モジュールを現在のモジュールにインポートすると、インポートされたモジュールの名前だけが現在のモジュールのグローバルシンボルテーブルに格納されるので、変数名の競合を心配する必要はありません.
その他のインポート方法:
1、
2、
注意:*をインポートするのはよくありません.読みにくいコードが発生し、名前の競合が発生しやすいためです.
二、モジュール探索経路
aという名前のモジュールをインポートすると、インタプリタはまず組み込みモジュールからマッチングを試み、見つからない場合は現在のプログラムが存在するディレクトリ 標準ライブラリのインストールディレクトリ オペレーティングシステム環境変数PYTHONPATHに含むディレクトリ 変数sys.pathは、解釈器にモジュールの検索パスを指定する文字列リストです.環境変数PATHONPATHによってデフォルトパスに初期化され、PYTHONPATHが設定されていない場合は組み込みデフォルト値を使用して初期化されます.標準リスト操作で変更できます.
三、モジュールの__name__
いずれのモジュールについても、モジュールの名前はグローバル変数
“__main__”:
四、dir()関数
Python 3ベース6では、dir()関数を内蔵することで、クラスまたはオブジェクトのすべてのプロパティを問い合わせることができます.また、モジュールに定義されているすべての名前をリストし、整列文字列のリストを返すこともできます.
五、バッグ
複数のモジュール、すなわち複数をpyファイルは、同じフォルダに配置され、パッケージを構成します.例:
注:各パッケージフォルダには1つの__が含まれている必要があります.init__.pyのファイル、Pythonに教えて、このフォルダは1つのパッケージです.init__.pyは空のファイルであってもよい.
パケット内のサブモジュールを
個人サイト:http://songlee24.github.com
転載先:https://www.cnblogs.com/songlee/p/5738115.html
一、モジュールのインポート
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
は以下を含む.>>> 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