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()
※3系の最新バージョンではこれを省略すると「utf-8」が自動的に採用されるためutf-8以外エンコードを指定したい時以外は記述する必要がありません。


5行目に関数、8行目にif文が登場しています。※関数は応用編で、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文の部分は、スクリプトとして直接呼び出した時のみ実行し、別のモジュールから呼び出された時(インポート)には実行しない、という記述です(※インポートは基礎編で紹介します)。 変数「__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文内、最初の命令である「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()



確かな力が身につく
Python「超」入門


入門 Python 3


科学技術計算のための
Python入門


退屈なことは
Pythonにやらせよう

 
 

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

▶入門編:ドキュメント


Python
スタートブック




P  R