組み込み開発のためのPython · レッスン 202 / 220
スコープとモジュール分割
ローカル変数とモジュールを使い、設定・通信・解析の依存関係を整理します。
プログラムが大きくなると、どこで値が変更されるかを追うことが難しくなります。変数を必要な範囲に閉じ込め、関係する機能をモジュールに分けます。
暗黙のグローバル変更を避ける
関数内で値を作り、引数で受け取り、戻り値で返すと、データの流れが明確になります。共有状態を安易にグローバル変数へ置くと、試験順序に依存する不具合や並行実行時の競合を生みます。変更可能な状態は、所有者を決めて受け渡します。
役割ごとにファイルを分ける
設定読込、通信、データ解析、コマンド起動を役割別のモジュールに分けると、依存方向を管理しやすくなります。実行時に意図しない別ファイルが読み込まれる名前衝突を避けるため、`json.py`など標準モジュールと同じ名前を自作ファイルに付けないようにします。
コード例
手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。
# protocol.py
SYNC = 0xA5
def has_sync(frame: bytes) -> bool:
return bool(frame) and frame[0] == SYNC
# main.py
from protocol import has_sync
print(has_sync(bytes([0xA5, 0x01])))手を動かす課題
バイト列の検証関数を別モジュールへ移し、呼び出し元から利用できるようにしてください。