Pythonの公式ドキュメントを見ているとよく、suite(スイート), clause(節), expression(式)という表記が出てきます。
これらの用語が何を意味しているかを図を用いて解説しています。
suiteとclauseとは何か?
suiteとは何か?
suiteとはスイートと読み、if文やfor文を記述するときの「:」以降の処理のことを言います。
本来の意味は一組や一揃いという意味の名詞です。カタカナ表記ではスイートとなり、甘いデザートなどのように聞こえますが、sweet(sweets)とはスペルが違います。
clauseとは何か?
clauseとはクローズと読み「節」という意味になります。if文やfor文などの条件と処理を合わせた全体を指します。
カタカナ表記ではクローズとなり、閉じるのように聞こえますが、closeとはスペルが違います。
図で違いを見る
図でsuite(スイート)とclause(クローズ)を見ると違いがわかりやすいです。
例えばif文があったときに、全体がclause(クローズ)、条件にマッチしたときに実行する処理がsuite(スイート)となります。
A = 100
if A == 100:print('Aは100です。')
条件式など冒頭の部分をヘッダと呼びます。
複数の条件分岐がある場合のsuiteとclause
次の記述のように複数の条件分岐がある場合は、分岐の分だけsuite(スイート)とclause(クローズ)ができます。
A = 50
if A == 100:
print('Aは100です。')
elif A >= 80:
print('Aは80以上です。')
elif A >= 70:
print('Aは70以上です。')
else:
print('Aは70以下です。')
公式ページにおけるsuiteの記述と説明文
Pythonの公式ページではsuiteは以下のように使われています。
if_stmt ::= "if" assignment_expression ":" suite
("elif" assignment_expression ":" suite)*
["else" ":" suite]
try_stmt ::= try1_stmt | try2_stmt
try1_stmt ::= "try" ":" suite
("except" [expression ["as" identifier]] ":" suite)+
["else" ":" suite]
["finally" ":" suite]
try2_stmt ::= "try" ":" suite
"finally" ":" suite
suiteの説明は以下のようになっています。
複合文は、一つ以上の ‘節 (clause)’ からなります。節は、ヘッダと ‘スイート (suite)’ からなります。一つの複合文を成す各節のヘッダは、全て同じインデントレベルに置かれます。各節のヘッダは一意に識別するキーワードで始まり、コロンで終わります。スイートは、節によって制御される文の集まりです。スイートは、ヘッダがある行のコロンの後にセミコロンで区切って置かれた一つ以上の単純文、または、ヘッダに続く行で一つ多くインデントされた文の集まりです。後者の形式のスイートに限り、さらに複合文をネストできます。
https://docs.python.org/ja/3/reference/compound_stmts.html
expression(式)とは何か
expression(式)とは上記のヘッダの中の条件式 A == 100 や A >= 80 などのことです。
expressionには種類が3つあります。
それぞれの違いは以下になります。
assignment_expression
assignment_expressionとは何らかの文字と数値が不等号で結ばれた式を指します。
正式名称は「代入式」です。if文やwhile文で用いられているます。
A == 100
B >= 80
など。
if_stmt ::= "if" assignment_expression ":" suite
("elif" assignment_expression ":" suite)*
["else" ":" suite]
while_stmt ::= "while" assignment_expression ":" suite
["else" ":" suite]
expression_list
expression_listとはlistやrangeのように一まとまり(イテラブル)な要素を表した式のことを指します。
イテラブルとはfor文でループ可能なオブジェクトのことを指します。
正式名称は「式のリスト」です。
range(10)
[1,2,3,4,5,6,7,8,9]
[1:100]
“文字列やstring”
など。
for_stmt ::= "for" target_list "in" expression_list ":" suite
["else" ":" suite]
expression
expressionとはブール演算をする式(Ture or Falseの2択を返す)や、ラムダ式(無名関数)のことを指します。
正式名称は「条件式」です。
try文のexceptの中や、with文で使われる。
関数やエラーなど、オブジェクトになるもの。
with open(‘sample.txt’, ‘a’) as f
except ZeroDivisionError as e
except TypeError as e
など。
try_stmt ::= try1_stmt | try2_stmt
try1_stmt ::= "try" ":" suite
("except" [expression ["as" identifier]] ":" suite)+
["else" ":" suite]
["finally" ":" suite]
try2_stmt ::= "try" ":" suite
"finally" ":" suite
while_stmt ::= "while" assignment_expression ":" suite
["else" ":" suite]
_stmtとは何か?
各構文の先頭に書かれている、「_stmt」は「statement」の略で「〇〇文」という意味になります。
if_stmtならif文、for_stmtならfor。文が複数ある場合は、try, try1, try2のように連番が割り振られ識別できるようになっています。
for_stmt:for文
if_stmt:if文
ry_stmt:try文
try1_stmt:try1文
など。
try_stmt ::= try1_stmt | try2_stmt
try1_stmt ::= "try" ":" suite
("except" [expression ["as" identifier]] ":" suite)+
["else" ":" suite]
["finally" ":" suite]
try2_stmt ::= "try" ":" suite
"finally" ":" suite
「::=」という記述で、〇〇文の公式はイコール以下であるということを示しています。
例えば、