10/27(火) · 11:05
第6章 前半: 値、関数、条件と繰り返し
『日本語技術教科書 Vol.0』の第6章 前半。値、関数、条件と繰り返しを、2 人の掛け合いで解説する。
この回を聴く
0:0011:05
音声を読み込めませんでした。記事は下で読めます。
AIこの記事は AI の Claude が書きました。
- 型は境界で明示的に変換し、関数の既定値は定義した時点で 1 度だけ評価される。
- 真偽の読み替えと短絡評価は、0 や空を欠損と取り違えやすく、if の条件の順序は仕様の一部になる。
- 繰り返しは取得と更新の設計であり、内包表記も「取得、条件、式、格納」の順で読める。
教材の 6.1 節から 6.3 節まで。
6.1.1〜6.1.2 式と文、値の型
教材の第 6 章は、第 5 章の名前の考え方を土台に、Python の基本構文を読む。前半は式と値、関数、分岐、繰り返しを扱う。
式は評価して値になるもので、2 + 3 や関数の呼び出しが当たる。文は実行の単位で、代入や if がそれにあたる。式だけを書いたファイルを実行しても、結果は表示されない。Python では行頭の字下げがブロックの構造になり、囲む記号の代わりに空白の幅が構文を決める。
120 * 3 - 20 は 340 だが、120 * (3 - 20) は -2040 になる。教材は優先順位と評価順序を分け、優先順位を覚えても副作用のある式の順序までは説明できないとする。= は束縛、== は等しさの比較で、通常の代入文を if の条件にそのまま書くことはできない。
型については、数字の文字列 "12" と整数 12 は別のものとして扱う。+ は整数なら加算、文字列なら連結なので、"12" + "3" は "123"、12 + 3 は 15 になる。"12" + 3 は意味を選べず TypeError で、int("12.5") は整数の形でないため ValueError になる。小数から整数への変換は四捨五入ではなくゼロ方向への切り捨てで、int(-2.9) は -2 である。// は床方向の除算なので、-5 // 2 は -3 になり、ゼロ方向とは限らない。
True は整数の仲間で、None は 0 とも空文字とも等しくない。検索の失敗を None で返す約束なら、見つかった位置 0 と区別しなければならず、真偽へ変換するとその情報が消えることがある。
6.1.3 関数と既定値
def を実行すると、関数を作って名前に結び付けるだけで、本体は呼ばれたときに動く。return を通らず末尾に達すると、戻り値は None になる。
既定値の式は、関数を定義した時点で 1 度だけ評価される。空のリストを既定値にすると、呼ぶたびに同じリストへ追加される。これは第 5 章の束縛と共有で説明でき、Python が値を勝手に覚えているわけではない。既定値を None にして、本体の中で新しいリストを作る形なら、呼び出しごとに別のリストになる。定義時に計算した現在時刻も、呼んだ時刻ではなく定義した時刻が使い回される。
6.2.1〜6.2.2 比較、真偽値、分岐
文字列の大小は基本的にコードポイントの辞書式で、数字の文字列 "10" と "2" は数の順には並ばない。条件では、None、False、数の 0、空の文字列や入れ物が偽、ほかは通常は真になる。
and は左が偽なら右を評価せず左を返し、or は左が真なら右を評価せず左を返す。返るのは bool とは限らない。位置が 0 のとき position or 99 は 99 を選ぶので、有効な 0 を欠損と取り違える。None だけを欠損とみなす条件式なら 0 を保てる。NaN は 0 と違って通常は真になるため、データの妥当性を真偽の読み替えだけで検査しない。
if、elif、else が一続きなら、動く本体は多くても 1 つである。欠損、負、ゼロ、残りの順に分ける例では、None を先に分けるので、大小比較に進まない。この関数は入力が None か比較できる数に限られ、NaN は比較をすり抜けて「正」と分類される。else に入ったから妥当とは言えず、0、空、欠損は別のケースとして設計する。
6.3.1〜6.3.4 繰り返しとデータの入れ物
この節で扱う入れ物は 4 種類で、順序を持つ可変の list、不変の tuple、キーで値を引く dict、重複を持たない set である。入力の順を残すなら list、頻度を引くなら dict、既出かの確認だけなら set、と操作で使い分ける。set の走査順に意味はなく、{} は空の dict になる。dict や set はハッシュで検索するため、可変のリストはキーにできない。
for は対象からイテレータを得て、次の値を求めては名前に結び付け、尽きると終わる。range(2, 8, 2) は 2、4、6 で、終わりの値は含まない。continue は残りの本体を飛ばして次の要素へ、break は反復全体を終える。走査しているリストを書き換えると、要素が重複したり飛ばされたりしうる。
while は更新を書き手に任せるため、停止へ向かう量を追う必要がある。5 個の値を 2 個ずつ処理する例では、残量が 5、3、1、0 と減る。バッチの大きさが 0 だと位置が進まず、無限ループになる。
内包表記は、要素の取得、条件、式、格納の順で理解する。例では、-2 と 0 を条件で外し、3 と 4 だけを二乗して [9, 16] を得る。出力が目的なのに結果のリストを作る使い方や、複雑な条件を詰め込む使い方は、通常の for のほうが追いやすいと教材は述べる。
まとめ
- 型の変換は境界で明示し、既定値は定義時に 1 度だけ評価される。
- 0 や空の読み替えと短絡評価は欠損との取り違えを招き、条件の順序が仕様になる。
- 繰り返しは取得と更新の設計で、内包表記も同じ順序で読める。
後半は、イテレータとジェネレータから、例外処理、型ヒント、コピーまでを扱う。
出典
- オーナー(AI で作った教材、Web には公開していない) 日本語技術教科書 Vol.0 コンピュータからPython・機械学習・LLMへ 第6章 2026-10-18




