Yu'n Craft
📅 投稿日: 2017-07-12 | 📂 カテゴリ: software-crafts

いまさら始めるPython3(4)-Pythonの構文

はじめに

ここでは、Pythonの構文の概要を紹介します。

Pythonは、プログラムの記述の中で極力余分なものはなくして、シンプルで見やすいプログラムができるように考えられています。

そのため、例えば、C/C++/Java/C#などの言語は、「{」から「}」で制御構文のブロックを区切り、かつ、インデントによってブロックを明確にしますが、Pythonはこのような「{」や「}」はなくともインデントがブロックを意味します。

では、基本的な構文について説明します。

基本的な文法

Pythonの基本的な構文構成は次の通りです。

  • 行の先頭に「#」がある場合はコメントとして扱われて処理はされません。
  • 他の言語(C/C++/Java/C#など)で使われるブロックを示す「{」~「}」は使いません。字下げ(インデント)がブロックを示します。また、ブロックの終了時には、終了後の行のインデントを上位に合わせるか、空行「Enter」を挿入します。
  • 他の言語(C/C++/Java/C#など)で使われる「;」は使いません。
  • 他の言語(C/C++/Java/C#など)で使われる変数の宣言は、データ型を使用せずとも自動で判断されます。強制的にint()のようにすることもできます。
  • 何もしない場合は「pass」を記述します。(時々この表記が必要になります)

補足(コメント文)

Pythonのコメント文は、行の先頭に「#」をつける行コメントのみです。

「"""」や「'''」でくくる複数行コメントの書き方もありますが、これは、「いまさら始めるPython3(2)-文字列の扱い」で紹介したように文字を扱う構文をコメントの代わりに使うもので、厳密にはコメント文の書き方ではありません。

よって、if文やfor文などの制御ブロック中に「"""」や「'''」を使う場合は、インデントを合わせないといけません。インデントしないと構文エラー「Syntax Error」になります。

「#」をつけた場合、制御ブロック中のインデントを意識する必要はありません。

補足(変数)

変数については、以下のように「変数名 = 値」のように記述します。

変数に入った値は、以下のようにprint()文により出力することができます。

>>> aa = 1.0>>> print(aa)1.0>>> bb = 1>>> print(bb)1>>> cc = 'tomizo_no.2'>>> print(cc)tomizo_no.2

条件分岐構文

条件分岐の構文には次のものがあります。

  1. if~else文
  2. if~elif文、または、if~elif~else文

例えば、以下のように記述します。

1. 2分岐の場合(例えば一つの条件に合うかどうかを確かめる場合)

>>> value = True>>> if value :...   print('値は真です。')... else :...   print('値は偽です。')...値は真です。

2. 複数分岐の場合(複数の条件の中の中からあったものによって処理を変える場合)

>>> value = 3>>> if value == 1 :...    print('値は1です。')... elif value == 2 :...    print('値は2です。')... elif value == 3 :...    print('値は3です。')... else :...    print('値はその他です。')...値は3です。

繰り返し構文

繰り返しの構文には次のものがあります。

  1. for文、または、for~else文
  2. while文、または、while~else文

1. for文、または、for~else文

for文は指定範囲の繰り返しや指定した値での繰り返しを行う文です。

指定範囲の繰り返しは、range関数という範囲を指定する関数で繰り返しの範囲で実行します。

指定した値での繰り返しは、シーケンス型という配列の中の値を順番に実行します。

例えばrange関数を使った指定範囲の繰り返しは、次のように記述します。

>>> for var in range(0, 10):...    print(var)...0123456789

また、指定した値での繰り返しは次のように記述します。

>>> values = [1,3,5,7,9,11]>>> for var in values:...    print(var)...1357911

for~else文については、例えば、次のように、繰り返しの終了時の処理を記述します。

>>> for var in range(0, 5) :...    print(var)... else :...    print('end')...01234end

2. while文、または、while~else文

while文は、指定した条件を満たす限り繰り返しを行う文です。

>>> val = ''>>> while val != 'aaaaa' :...    val = val + 'a'...    print('value of val: ' + val)...value of val: avalue of val: aavalue of val: aaavalue of val: aaaavalue of val: aaaaa

while~else文については、for~else文と同様に、例えば、次のように繰り返しの終了時の処理を記述します。

>>> val = ''>>> while val != 'aaaaa' :...    val = val + 'a'...    print('value of val: ' + val)... else :...    val = val + '.'...    print('value of val: ' + val)...value of val: avalue of val: aavalue of val: aaavalue of val: aaaavalue of val: aaaaavalue of val: aaaaa.

with構文

with構文は、所定の機能をより安全かつ簡潔に使う構文です。

例えば、通常ならファイルをオープンした後、クローズしなければならないところが、with構文を使用するとファイルのオープン後のクローズが不要になります。

>>> with open('tmp.txt', 'w') as wfp:...    wfp.write('「tmp.txt」ファイルwith文の終わりでクローズされます。')...32

上記は、以下の書き方と同等です。

>>> wfp = open('tmp.txt', 'w')>>> wfp.write('「tmp.txt」ファイルwith文の終わりでクローズされます。')32>>> wfp.close()

たかがclose()の一文がなくなるだけかと思われがちですが、例外が発生した場合でも必ずclose()されたり、close()を忘れたりすることがなくなります。

ただし、確実のclose()される代わりに、withブロックの途中でブロック外に抜けることはできません。

また、with構文が使える関数は、必ず例外処理やcloseなどの終了処理の記述が必須となります。

今回のPythonの構文については、ここまでです。

次回は、扱うデータの型について紹介します。