20.2. 式と評価
数の計算を中心に、Python の機能のなかの、簡単な一部を紹介します。
基本的なプログラムは 式 (expression) と 評価 (evaluation) という枠組みで理解することができます。
比較的少ない規則で全体を把握できるため、HWBではここから説明を始めます。
他に、print
など 文 から紹介する流儀もあります。
セル #
先に 12.5. Colabを使った演習
でColab の基本を学び、セルに 3 + 5
と記入して実行すると 8
という結果を得られることを体験しました。

毎回スクリーンショットで示すことは煩雑なので、次の長方形領域のような略記を併用します。
3 + 5
の部分がセルへの入力、8
が実行後の応答と対応します。
3 + 5
算術式と演算子 #
Python のプログラムの書き方を、まず、「式を評価して値(あたい)を知る」という枠組みで紹介します。
先ほどの 3 + 5
を式、8
が値に対応します。まず、このような四則演算の範囲で式を考え、その後、拡張します。
四則演算は Python の式として概ね有効な文法です。このことを、 式 として理解してみましょう。
まず、式とは「次の(1)または(2)である」と考えます。これは、Pythonの厳密な定義ではなく、考え方の紹介のためのものです。(1) 原始式 (atom) : 数そのもの (e.g., `3`, `5`, `3.1415`) (評価した値は自分自身)(2) 式と演算子の適切な組合せ : e.g., `(3+5)`, `(1+(2+3))`
(1)より数そのものは式です。(2)から、(3+5)
は、3
, 5
は原子式として式で、また2項演算子 +
による適切な組み合わせとして、(3+5)
も式です。(1+(2+3))
はもう少し複雑ですが、内側の (2+3)
は先ほど同様に式ですから、全体は (1+式)
という形になり、これもまた2項演算子 +
による適切な組み合わせとして式になります。(2)の定義内に「式」が含むことので、このように式を組み合わせた式を作成することができます。式を構成する式を 部分式 とも言います。
演算子の前後には、読みやすさのために空白を入れて `(3 + 5)` のように表記することが勧められています。意味は変わりません。 また、意味が明確なところでは2項演算子の括弧を省略できます。つまり、`((1 + 2) + 3)` を `1 + 2 + 3` と書けますし、 `4 + 5 * 6` は、乗算が優先して `(4 + (5 * 6))` の略記です。
練習として、自分で式を作ってColabで実行し、Python の評価結果が自分の計算と一致することを確認しましょう。
(3 + 5) * 2
--5
定数 #
\(\pi\) など数学の定数を使うこともできます。
import math
なぜ初めから全部の機能を使えないのか?
なお、実数の表現や演算では数値誤差が生じ得ます。実用に使う場合は、精度に注意してください。 14.2.2. 浮動小数点数
math.pi
2 * math.pi
このような定数を扱えるように、式の定義を次のように更新します。定数は、原子式です。(1) 原始式 (atom) : - 数そのもの (e.g., `3`, `5`, `3.1415`) - [New!] 定数 (e.g., `math.pi`, `math.e`) (評価した値は自分自身)(2) 式と演算子の適切な組合せ : e.g., `(3+5)`, `(1+(2+3))`
radius = 10
radius
radius * 2
関数 #
関数も式を構成する要素です。
math.floor(3.14)
math.gcd(192, 324)
自分で関数を定義することもできます。
左のセルが Python での f(x)
の定義です。このセルを実行後は、Pythonの処理系が関数 \(f(x)\)
を認識しれ、右のような計算が可能になります。
def f(x):
return x ** 2 + 100
f(0)
f(5)
関数定義の基本パターン def 関数名(x): return xを使う式 上記の例は、関数名は `f` 1文字で、`xを使う式` は `x ** 2 + 100` でした。 関数名には、長い名前を使うこともできます。当面はアルファベット小文字 5文字前後で名前をつけることをお勧めします。
厳密さ注意 --- 上記のパターンの一部は一字一句厳密に入力する必要があります - パターン中の `def` `:` `return` は一字一句このまま - `return` の左に、**スペース** (空白文字) を **4つ**
関数の引数は、2つ以上持つことができますし、名前も自由につけることができます。 引数は、ひきすう、 \(\sim\) 変数)} と読みます。
関数定義の基本パターン(改) def 関数名(引数1, 引数2, ...): return 引数を使う式
def add(a, b):
return a + b
add(1+2, 5) * 2
ここまでで、式の定義は次のように拡張されました。(1) 原始式 (atom) : - 数そのもの (e.g., `3`, `5`, `3.1415`) - 定数 (e.g., `math.pi`, `math.e`) (評価した値は自分自身)(2) 式と演算子の適切な組合せ : e.g., `(3+5)`, `(1+(2+3))` (3) [New!] 関数 : e.g., `math.floor(3.14)`, `add(1+2, 3)`