第6章 · 自動化とAI·v1.0.0·更新 2026/7/20·読了目安 約18分
変更要約: 初版
6.1Pythonの基本要素とスクリプトの解釈
この節の要点
変数・リスト・辞書・ループ・条件分岐・関数というPythonの基本要素を、「文法の暗記」ではなく目の前のスクリプトが何をするか/どこが誤っているかを読み解く道具として学びます。ネットワーク自動化で頻出の「機器一覧を回して条件に合う機器だけ処理する」パターンを、インデント・キーの有無・返り値という典型的な破綻点から診断できるようにします。
ENCORのドメイン6でPythonが問われるとき、期待されているのはプログラマとしての実装力ではなく、運用者としての読解力です。試験に出るのは「変数とは何か」ではなく、十数行のスクリプトが提示され、その出力を予測するか、意図どおりに動かない原因を指摘する形です。ネットワーク自動化のスクリプトは驚くほど型が決まっていて、ほとんどが「機器の一覧(リスト)を回し、各機器の属性(辞書)を見て、条件に合うものだけ処理する」という骨格をしています。この骨格を押さえたうえで、インデントがループの内か外か・辞書に本当にそのキーがあるか・関数が値を返しているかという3つの破綻点を見る癖をつければ、初見のスクリプトでも判断できます。
6.1.1データを保持する要素:変数・リスト・辞書
- リスト(
[])は順序のある可変長の並びで、devices = ["r1", "r2", "r3"]のように同種のものを列挙する。要素は0から始まる番号で取り出す(devices[0]は"r1")ので、「3台あるからdevices[3]」と考えると範囲外エラーになる。ネットワーク自動化では機器一覧・インタフェース一覧・取得結果の並びがリストになる。 - 辞書(
{})はキーと値の対応で、dev = {"host": "r1", "ip": "10.0.0.1"}のように1台の属性をまとめる。取り出しはdev["ip"]だが、存在しないキーを角括弧で引くとKeyErrorで停止する。停止させたくない場合はdev.get("ip")(無ければNone)やif "ip" in dev:で存在確認するのが定石で、機器ごとに項目の有無がまちまちなインベントリを扱う実務ではこの差が効く。 - リストと辞書は入れ子にできるのが実務上の要点で、
inventory = [{"host": "r1", "role": "core"}, {"host": "r2", "role": "access"}]のような「辞書のリスト」がAPI応答やインベントリの標準形になる。この形ならfor dev in inventory:で1台ずつ取り出し、dev["role"]で属性を判定できる——外側がリスト(何台か)/内側が辞書(1台の属性)という対応を読み違えないこと。

