【Python】変数のスコープを理解しよう!初学者向けにわかりやすく解説!

AI・データサイエンス、
機械学習の実践力を高めたい方へ

  • プログラミングを0から学びたい
  • データサイエンティスト、データ
    アナリストを目指したい
  • AIエンジニア、大規模言語モデル(LLM)エンジニアを目指したい

AI人材コースを無料体験してみませんか?

  • 無料で120以上の教材を学び放題!
  • Pythonやデータ分析、機械学習など
    AI人材に必須のスキルを無料体験できる!
  • データ分析、AI開発の一連の流れを体験、実務につながる基礎スキルを習得!

1分で簡単!無料!

無料体験して特典を受け取る

変数のスコープとは

変数のスコープとは、変数がアクセスできる範囲のことです。変数をどこで作成したかによってスコープ(有効範囲)が違ってきます。変数の宣言場所は、大きく「関数内」と「関数外」の2通りあります。

まずは、通常の関数の例を見てみましょう。

# 1つ目のサンプルプログラム
def add(x1):
    x2 = 10 # 関数内で変数を作成(ローカル変数)
    result = x1 + x2
    print(result)

add(5) # 5 + 10で15が出力

出力結果

15

add関数内にx2は定義されていませんが、7行目のadd関数の引数で5を渡していることから、2行目のx1に引数として5を受け取り、4行目で足し算が正常に行われています。次に、変数のスコープ(有効範囲)に関するプログラムです。

# 2つ目のサンプルプログラム
def add(x1):
    x2 = 10 # 関数内で変数を作成(ローカル変数)
    result = x1 + x2
    print(result)

add(5) # 5 + 10で15が出力
print(x2) # ここでエラーが発生

出力結果

NameError: name 'x2' is not defined

上記の2つ目のサンプルプログラムを実行すると、NameError: name ‘x2’ is not definedというメッセージがが発生してしまい正常にプログラムが動作しません。NameErrorメッセージが発生する理由は、関数内で定義した変数x2はローカル変数であり、ローカル変数のスコープは関数内部だけしか有効ではないため、関数の外側でx2を呼び出すとNameErrorが発生してしまいます。有効な解決手段として関数の外にx2を定義することです。関数の外に定義することでグローバル変数として扱われます。上記のサンプルプログラムを改善したプログラムが下記になります。(※変数のスコープ以外にも、関数内部処理なども修正しています。)

x2 = 10 # 関数の外側で変数x2を作成(グローバル変数)

def add(x1):
    # x2 = 10 # 関数内で変数を作成(ローカル変数)
    result = x1 + x2
    print(result)

add(5) # 5 + 10で15が出力
print(x2) # 10が出力

出力結果

15
10

Pythonを効率よく学ぶには?

Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。



  • 30時間以上の動画講座が見放題!
  • 追加購入不要!
    これだけで学習できるカリキュラム
  • (質問制度や添削プラン等)
    充実したサポート体制!

1分で簡単!無料!

AI人材コースを見る



無料体験して特典を受け取る