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


基本構文

前項まででインストールおよびプログラムの実行方法を学びました。 ここでPython基本構文について触れておきます。 尚、PythonではPythonの定義や文が入ったファイルをモジュールと呼びます。 今後は作成ファイルをモジュールと書きますのでご注意ください。

再度コードを書き込むファイルを作成しましょう。 下記コードを書き込んでください。

# -*- 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行目ではモジュールのエンコード宣言を記述します。


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

# -*- coding: utf-8 -*- 

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

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

if __name__ == "__main__":

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


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


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

# -*- coding: utf-8 -*- 

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

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

if __name__ == "__main__":

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

前述した通り、Pythonではブロック構造に「 { 」(中カッコ)を用いない、インデントでのブロック構造となっています。 ですので関数「test」の範囲は6行目、if文の範囲は9行目から12行目となります。 慣れない内は大変ですが、すぐ慣れます。 尚、見た目上はインデントがきちんとしていても、タブと半角スペースが混じったインデントはエラーとなります。(4タブと半角スペース4つ、など)


先程の実行結果に11行目の「パイソンイズム」は出力されませんでした。 その理由は11行目、行頭の「#」(シャープ)がPythonではコメントアウト記号となっているからです。 シャープ以降の記述は全て無視されます。


8行目の記述は何だろう?とPython覚えたての頃は思っていました。Pythonのサンプルコードでもよく見かけます。


このif文の部分は、直接スクリプトとして呼び出した時のみ実行されて、別のモジュールから呼び出された時には実行されない、という記述です。 javaでいう「main関数」のようなものですね。 変数「__name__」には、スクリプトとして起動した際に「__main__」という値が入ります。 別のモジュールから呼び出された時には、自身のモジュール名が入るので実行されない、という仕組みです。

# -*- coding: utf-8 -*- 

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

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

if __name__ == "__main__":

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


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

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


まず最初に「モジュールのロード」が出力されていますね。 pythonは読み込まれると上から順に処理していきます。 ですので一番最初に「モジュールのロード」が出力されます。

# -*- coding: utf-8 -*- 

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

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

if __name__ == "__main__":

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


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


さらに下へ行くと、先程も触れたif文があります。 スクリプトとして実行しているので、「__name__」には「__main__」が入っています。 ですのでこの評価式はTrueとなり、if文の中身が実行され if文内、最初の命令である「python-izm」が出力されます。

# -*- coding: utf-8 -*- 

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

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

if __name__ == "__main__":

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


次の「パイソンイズム」はコメントアウトされているのでスルーされます。 そして最後にtest関数が呼び出されて「関数:testを呼び出しました」が出力される、という順番です。

# -*- coding: utf-8 -*- 

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

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

if __name__ == "__main__":

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


1行目にPythonインタープリタへのパスを記述するケースもあります。これはWindows環境では必要の無い記述ですが、Linuxなどの環境で、pyファイルをshファイルなどと同じ様な形で実行する場合に参照されるパスとなります。

#! /usr/bin/python
# -*- coding: utf-8 -*- 

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

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

if __name__ == "__main__":

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



実践OpenCV 2.4 for Python


パーフェクトPython


Pythonによるデータ分析入門


Python文法詳解

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

▶入門編:ドキュメント


Python
スタートブック




P  R