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` になります。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%