文と式とインデント

ここでは文と式、そしてインデントについて学びます。

とはいっても文なのか式なのかは意識しなくてもプログラミングは可能です。なので、はじめてプログラミングに取り組んでる方は「へー、そうなんだ」という感じで良いかと思います。

インデントについては、そもそもなんとかして“ここから〜ここまで”を表したいときに使わざるを得ないので好みの問題は別にして概念自体はすぐに理解できると思います。

ここで学習すること

  • インデント

サンプルコード

#!/usr/bin/env python3.8

import sys

x = int(sys.argv[1])
op = sys.argv[2]
y = int(sys.argv[3])

if op == "+":
	z = x + y
	print("result: " + str(z))
elif op == "-":
	z = x - y
	print("result: " + str(z))
else:
	print("その演算子はサポートしていません")

説明

これが式ですと言われるともっとも納得感があるのは以下だと思います。

Z = x + y

そうですね。学校で数学の時間に式と呼んでましたよね。でも残念ながらこれは文です。

というのも「=」は等号ではないのです。変数zにx+yの結果を代入する役割を担っています。より直感的な表現を取ると以下のような感じでしょうか。

では式はどれでしょう?どこにもない気がしきましたか?

x + y

実はこれが式なんです。では何が文で何が式なのというと、Pythonでは一番大きな違いは値を返すかどうかという点です。Pythonにおける文は値を返しません。

例えばC言語などでは文も値を返します。具体的には代入された変数zの値を返します。従って、代入しつつその値を判定に使うという書き方が出来ますが、Pythonではその方法は採れません。

if op == "+":
     z = x + y
     print("result: " + str(z))

次にインデントを見てみましょう。インデントはブロックという範囲を示す役割を担っています。多くの言語で{}を使って表現しているものをインデントで表現します。

具体的にはこの例ではif文の中身がどこまでなのかを示しています。インデントせずに書くと、そこはもうif文のブロックの外ということになります。

余談ですが、if文の条件を示す部分

op == "+"

は、条件です。もしopに「+」が入っていたら、式はTrueという値を返します。

それほど突飛なことでもないので楽に理解し、さらっと流してしまっても問題無いと思います。