組み込み開発のためのPython · レッスン 86 / 220

ジェネレーターで逐次処理する

yieldは値を一つずつ生成し、大きなファイルを一度にメモリへ載せずに処理できます。例外が起きた行番号を記録し、未処理データを黙って捨てない設計にします。

yieldは値を一つずつ生成し、大きなファイルを一度にメモリへ載せずに処理できます。例外が起きた行番号を記録し、未処理データを黙って捨てない設計にします。 このページでは、構文だけでなく、入力の検証と再現可能な確認方法も扱います。

考え方と使いどころ

yieldは値を一つずつ生成し、大きなファイルを一度にメモリへ載せずに処理できます。例外が起きた行番号を記録し、未処理データを黙って捨てない設計にします。

組み込み開発での注意点

一つの処理を小さな関数に分け、入力条件・戻り値・例外を明確にすると、機器なしの試験が容易になります。

コード例

手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。

def within_limits(value: int, low: int, high: int) -> bool:
    if low > high:
        raise ValueError("範囲の指定が逆です")
    return low <= value <= high

print(within_limits(3290, 0, 5000))

手を動かす課題

ログファイルを一行ずつ読み、壊れた行の番号を報告するジェネレーターを作ってください。

参考資料

「関数・反復・標準ライブラリ」の章一覧へ