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ではコメントアウト記号となっているからです。ハッシュマーク以降の記述は実行の対象とはならず、Pythonの文法に即していなくても構いません。


8行目の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


Effective
Python


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

 
 
 

ユーザーからの入力値を受け取ってみましょう!



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




P  R