【Python】Pythonの構文

python_logo

こんにちは!

Pythonでコーディングする際の構文について基本ルールと例外についてまとめました。

おそらく、ある程度Pythonを触っている人にとっては当たり前のことかもしれません。

ですが、他の言語からPythonに来た人はインデントで区切るのがびっくりすると思います(私はしました)。

それではみていきましょう!

基本ルール

行の終わりが文の終わり

はい、当たり前のことですよね。でも重要なことはセミコロンで終わらないことです。

一応Pythonではセミコロンがあってもエラーにはならずに認識してくれます。

>>> print('use semicolon')
use semicolon
>>> print('no use semicolon')
no use semicolon
>>> 

複合文の場合は字下げ

複合文の場合には字下げをします。

複合文はヘッダー部とボディ部で構成されています。

ヘッダー行の終わりにコロンをつけ、改行してからボディ部は開始します。
そして、ボディ部は字下げをしてから書き始めます。

>>> def sample(arg1, arg2):
...   print('Python is one of the great languages!')                                                                                                                                            
... 

インデントしないと、エラーになります。

>>> def sample_error(arg1, arg2):                                                                                                                                                               
... print('you must not forget indents!')
  File "", line 2
    print('you must not forget indents!')
        ^
IndentationError: expected an indented block

同じブロックはインデントが同じ

同じブロック(処理の塊)はインデントを同じにする決まりがあります。

インデントで処理の流れを見た目で理解できます。

>>> X = True
>>> Y = False
>>> if X or Y:
...   print('X or Y is True')
...   print('Which is True?')
...   if X:
...     print('X is True!')
...   else:
...     print('Y is True!')
... 
X or Y is True
Which is True?
X is True!

これはPythonの大きな特徴ですね。コーディング規約などで縛ることなく、見た目を言語仕様として整えさせています。

例外

基本は抑えました。とはいえ、どんな物事にも例外は常に付きまといます。

ですが、ほとんどがニッチなもので、知らなくてもよいものがほとんどです。

覚えなくても構いませんが、どんな例外があるのか見ていきましょう。

セミコロン

セミコロンを使えば、1行に複数の単純文を書くことができます。

但し、複合文を含めることはできないので注意してください。

>>> X = 1; Y = 2; Z = 3;
>>> print(X, Y, Z)
1 2 3
>>> X = 1; def sample(arg): pass; Z = 3;
  File "", line 1
    X = 1; def sample(arg): pass; Z = 3;
             ^
SyntaxError: invalid syntax

[],(),{}で囲む

括弧は閉じるまで1つの文としてみなされます。これは複合文のヘッダー部でも同様です。


>>> X = ('Thomas',
...      'John',
...      'Jim')
>>> if (True or False
...     and True):
...   print('it is ok')
... 
it is ok
>>> def sample_method(arg1,
...                   arg2,
...                   arg3):
...   print('It is Ok')
... 
>>> sample_method(1,2,3)
It is Ok

これは、変数の位置を揃えたい時に時々見かけます。

\(バックスラッシュ)

\を使っても複数行に書くことができます。

>>> X = 100 + 200\
...         + 300+\
...           400
>>> X
1000

但し、推奨されません。例では単純な計算ですが、もっと複雑になるとかなり読みにくいです。

複合文のボディ部

複合文のボディ部が一行しかない場合に、ヘッダー部と同じ行に書けます。

但し、ボディ部が複合文の場合は書けません。


>>> def sample_method(arg1): pass
... 
>>> def sample_method2(arg1, arg2): print(arg1, arg2)
... 
>>> def sample_method3(arg1): def sample_method4(arg1): pass 
  File "", line 1
    def sample_method3(arg1): def sample_method4(arg1): pass 
                                ^
SyntaxError: invalid syntax

このケースだけに当てはまりませんが、基本的に例外は使わずにインデントを整えたほうがよいでしょう。

そのほうがPythonらしいです。

まとめ

Pythonの構文についてみていきました。

おそらく、だいたい頭のイメージそのままだったと思います。

PythonではWYSIWYG(What You See Is What You Get)がインデントによって成り立っています。

これからさらに踏み込んで どうすれば見栄えが良くなるのかを考えたい人はPEP8に記載されているコーディング規約をみるといいと思います。

それでは以上になります。

みなさんのPythonライフがよりよくなるように祈っています。