nonlocal 外側の非グローバル変数を宣言する
最終更新:2026-09-22
nonlocal 外側の非グローバル変数を宣言する
nonlocal name は関数本体内の name が最も近い外側(ただし非グローバル)スコープの変数を参照することを示す。
| カテゴリ | キーワード/文 |
|---|---|
| 種類 | キーワード/文 |
| Python バージョン | all |
📝 構文
nonlocal name [, name]*
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
1 2
🏷️ 関連するキーワード/文
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Qネストした関数で nonlocal を書かずに外側の変数を変更するとどうなりますか?
A内側の関数に同名のローカル変数が作られ、外側の変数の値は変わりません。`UnboundLocalError` になることもあります。外側の変数を変更したいなら、必ず先に `nonlocal` を宣言します。
Q`nonlocal` はグローバル変数を指せますか?
A指せません。`nonlocal` はどこかの外側関数スコープにすでに存在する変数に束縛される必要があります。外側にその変数がなければ `SyntaxError: no binding for nonlocal 'x' found` になります。
Q`nonlocal` と `global` は同時に使えますか?
A使えますが、違う名前に対してだけです。同じ名前を `global` と `nonlocal` の両方で宣言することはできず、そうすると `SyntaxError` になります。