Pythonに挑戦(8)その(4)からの続き
Pythonのプログラム構造について説明します。
2.Pythonプログラムの構造
どの言語でプログラム開発するときもそうなのですが、長大な1つのプログラムで種々の処理を実現するのではなく、処理内容をいくつかのブロックに分けて、ブロックごとに開発を進めて行くのが常套的手法です。複数の開発者で作業するのであれば、モジュールごとに別ファイルにします。こうした考え方を「モジュール化」と言います。
モジュール化においては、複数の開発者で作業することを前提に、フローチャートを参考に、各モジュールをどのように組み合わせるかのか、各モジュールに何を担当させるか、あらかじめ、各モジュールの仕様・機能、モジュールを呼び出す場合の規則(引数、戻り値)を、しっかり検討し標準化しておかないと、全体を1つのシステムとしてまとめるときに、うまく繋がらない、ということが起きます。事後に整合性を図るのはとても大変で、組織がまとまって対処できず、組織そのものが崩壊してしまう、ということさえ起き得ます。
各モジュールの仕様・呼び出し規則が決まったところで、モジュール間で共通に使う変数、各モージュールの中でのみ使う変数を検討します。複数のモジュールでアクセスする変数(グローバル変数とします)はglobal宣言します。モジュール内でのみ使う変数(ローカル変数)は、そのモジュールを開発する担当者に変数名(当然、global宣言できません)、型、などを任せてしまってよいかも知れませんが、グローバル変数は、意味、型、どのタイミングで書き込み呼び出すかなどを文書にまとめて、複数の開発者で共有しなければいけません。
あるモジュールから別のモジュールmod1を利用する場合、そのモジュールの先頭で、
モジュール化においては、複数の開発者で作業することを前提に、フローチャートを参考に、各モジュールをどのように組み合わせるかのか、各モジュールに何を担当させるか、あらかじめ、各モジュールの仕様・機能、モジュールを呼び出す場合の規則(引数、戻り値)を、しっかり検討し標準化しておかないと、全体を1つのシステムとしてまとめるときに、うまく繋がらない、ということが起きます。事後に整合性を図るのはとても大変で、組織がまとまって対処できず、組織そのものが崩壊してしまう、ということさえ起き得ます。
各モジュールの仕様・呼び出し規則が決まったところで、モジュール間で共通に使う変数、各モージュールの中でのみ使う変数を検討します。複数のモジュールでアクセスする変数(グローバル変数とします)はglobal宣言します。モジュール内でのみ使う変数(ローカル変数)は、そのモジュールを開発する担当者に変数名(当然、global宣言できません)、型、などを任せてしまってよいかも知れませんが、グローバル変数は、意味、型、どのタイミングで書き込み呼び出すかなどを文書にまとめて、複数の開発者で共有しなければいけません。
あるモジュールから別のモジュールmod1を利用する場合、そのモジュールの先頭で、
import mod1
と宣言しておきます。mod1内の関数func1()を呼び出すのであれば、
mod1.func1()
とします。mod1を付けないと、どのモジュールからfunc1()を持ってくるのかがわかりません。複数のモジュールにfunc1()があるかも知れません。
mod1内のクラスclass1のインスタンスを作るのであれば、
class1_inst1 = mod1.class1()
とします。mod1内の変数abcにアクセスするのであれば、
de = mod1.abc
とします。変数abcの内容を書き換えるのであれば、
mod1.abc = de
とします。
テスト、モジュール化、グローバル変数については、また別途説明します。
テスト、モジュール化、グローバル変数については、また別途説明します。