0から始めるPython独学ラボ

化学専門の大学生が趣味で始めたPythonをできるだけ分かりやすく説明します

ローカル変数とグローバル変数について②

今回もローカルとグローバル変数、そしてスコープについて取り扱っていきます。

 

スコープには、LEGBルールがあります。これは、関数内で使用される変数がどのスコープに属するかを知るためのルールです。Lはローカルスコープ、Eは関数の外側の関数のスコープ、Gはグローバルスコープ、Bはビルトインスコープを表します。具体例を見ていきましょう。以下のコードがあるとします。

 

 

def a()

    return x

 

 

このようなコードが書かれたとき、もしもxが定義されていなければエラーが発生します。そのため、Pythonはxが定義されているのかどうか、さまざまなスコープを調べます。このスコープを調べる順番に、LEGBルールが存在します。優先順位はL E G Bの順番です。

 

この例において、まずPythonはxがローカルスコープで変数が定義されているかどうかを調べます。そして、ローカルスコープに存在しない場合には、Eスコープを調べます。Eスコープとは、関数内に関数がネストされている場合に存在する、内側の関数からみた外側の関数内に存在するスコープのことです。Eスコープに存在しない場合には、Gスコープを調べ、最後にBスコープを調べます。B(ビルトイン)スコープとは、Pythonの標準ライブラリの変数のことです。openとか、typeとかのことですね。

 

このようにしてPythonはスコープを調べていき、スコープ内に変数が見つかればその変数を使用します。そのスコープにを調べる優先順位がLEGBルールです。

 

 

 

以上で今回の記事は終わりです。お疲れ様でした。