python入門から応用までの学習サイト


基本構文

前項まででインストールおよびプログラムの実行方法を学びました。

ここでPython基本構文について触れておきます。

尚、PythonではPythonの定義や文が入ったファイルをモジュールと呼びます。

今後は作成ファイルをモジュールと書きますのでご注意ください。

再度コードを書き込むファイルを作成しましょう。

下記コードを書き込んでください。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

print u"モジュールのロード"

def test():
    print u"関数:testを呼び出しました"

if __name__ == "__main__":

    print "python-izm"
#   print "パイソンイズム"
    test()

書き込んだらファイル名を「test02.py」とし、文字コードを「UTF-8」で作業ディレクトリへ保存します。

これでモジュールの完成です。先程と同じようにプログラムを実行します。

python test02.py


--実行結果--

モジュールのロード
python-izm
関数:testを呼び出しました


上記の通り出力されるので、簡単に解説します。

1行目ではPythonのインタープリタへのパスを記述します。


今回のような、単独でのモジュール起動では記述が無くても大丈夫ですが、別のモジュールから今回作成したモジュールをimport(取り込み)したい!というような時には、モジュール内部にインタープリタへのパスを記述しておきます。

必要が無くても記述する癖をつけておきましょう。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

print u"モジュールのロード"

def test():
    print u"関数:testを呼び出しました"

if __name__ == "__main__":

    print "python-izm"
#   print "パイソンイズム"
    test()


2行目ではモジュールのエンコード宣言を記述します。


今回のモジュールは前回のモジュールには無かった、日本語(マルチバイト文字)が含まれています。

前回のように記述無しで実行すると、日本語(マルチバイト文字)が含まれている場合はエラーとなります。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

print u"モジュールのロード"

def test():
    print u"関数:testを呼び出しました"

if __name__ == "__main__":

    print "python-izm"
#   print "パイソンイズム"
    test()


6行目に関数、9行目にif文が登場しています。

この関数は、呼び出された際に「関数:testを呼び出しました」と出力するだけの簡単なものです。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

print u"モジュールのロード"

def test():
    print u"関数:testを呼び出しました"

if __name__ == "__main__":

    print "python-izm"
#   print "パイソンイズム"
    test()

前述した通り、Pythonではブロック構造に「 { 」(中カッコ)を用いない、インデントでのブロック構造となっています。

ですので関数「test」の範囲は7行目、if文の範囲は10行目から13行目となります。

慣れない内は大変ですが、すぐ慣れます。

尚、見た目上はインデントがきちんとしていても、タブと半角スペースが混じったインデントはエラーとなります。(4タブと半角スペース4つ、など)


先程の実行結果に12行目の「パイソンイズム」は出力されませんでしたね?

その理由は12行目、行頭の「#」(シャープ)がPythonではコメントアウト記号となっているからです。

シャープ以降の記述は全て無視されます。


9行目の記述は何よ?とPython覚えたての頃は思っていました。

Pythonのサンプルコードでもよく見かけます。


このif文の部分は、直接スクリプトとして呼び出した時のみ実行されて、別のモジュールから呼び出された時には実行されない、という記述です。

javaでいう「main関数」のようなものですね。


変数「__name__」には、スクリプトとして起動した際に「__main__」という値が入ります。

別のモジュールから呼び出された時には、自身のモジュール名が入るので実行されない、という仕組みです。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

print u"モジュールのロード"

def test():
    print u"関数:testを呼び出しました"

if __name__ == "__main__":

    print "python-izm"
#   print "パイソンイズム"
    test()


先程の出力結果は下記の通りでしたね?

モジュールのロード
python-izm
関数:testを呼び出しました


まず最初に「モジュールのロード」が出力されていますね。

pythonは読み込まれると上から順に処理していきます。

ですので一番最初に「モジュールのロード」が出力されます。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

print u"モジュールのロード"

def test():
    print u"関数:testを呼び出しました"

if __name__ == "__main__":

    print "python-izm"
#   print "パイソンイズム"
    test()


次に「python-izm」が出力されています。

上から順に処理していますが、7行目のprint文は関数の配下にいるので、test関数が呼ばれない限り実行される事はありません。


さらに下へ行くと、前述したif文があります。

スクリプトとして実行しているので、「__name__」には「__main__」は入っています。

ですのでこの評価式はtrueとなり、if文の中身が実行開始となります。

そしてif文内、最初の命令である「python-izm」が出力されます。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

print u"モジュールのロード"

def test():
    print u"関数:testを呼び出しました"

if __name__ == "__main__":

    print "python-izm"
#   print "パイソンイズム"
    test()


次の「パイソンイズム」はコメントアウトされているのでスルーされます。

そして最後にtest関数が呼び出されて「関数:testを呼び出しました」が出力される、という順番です。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

print u"モジュールのロード"

def test():
    print u"関数:testを呼び出しました"

if __name__ == "__main__":

    print "python-izm"
#   print "パイソンイズム"
    test()

困った時はドキュメントを参照しましょう!

▶入門編:ドキュメント





スポンサードリンク



Python
スタートブック



Pythonで学ぶ
プログラム作法



Python
ポケットリファレンス



エキスパート
Pythonプログラミング



Python入門
2&3対応



みんなのPython
改訂版



みんなのPython
Webアプリ編



初めてのPython
第3版



Pythonチュートリアル
第2版



Pythonクックブック
第2版



Google App Engine
JAVA PYTHON対応