Pythonのグローバル変数とローカル変数
Pythonでは関数の呼び出しされるごとに、実引数と関数内の変数はローカルスコープに存在します。
また、関数の外で宣言された変数はグローバルスコープに存在することになります。グローバルスコープはプログラムが実行されると生成されます。
ローカルスコープにある変数はローカル変数、グローバルスコープにある変数はグローバル変数といいます。
グローバル変数は関数の中からも、関数の外からでもどこからでも使うことができます。
関数内でグローバル変数を使う例
# 関数でグローバル変数を呼び出す方法 num = 1 def test(): print(num) print(num) test() print(num) 結果 1 1 1 ローカル変数は関数内だけでしか使用できません。 ローカル変数とグローバル変数の使われ方の例 # ローカル変数とグローバル変数の使われ方 num = 1 def test(): num = 100 print(num) print(num) test() print(num)
結果
1
100
1
関数内でグローバル変数と同じ名前のローカル変数を宣言すると、
関数内ではローカル変数が優先して使用されます。
関数内でグローバル変数を使用して、その後に同じ名前のローカル変数を宣言するとエラーになります。
同じ名前のグローバル変数とローカル変数が混在してエラーになる例
# 関数でグローバル変数を呼び出す方法 num = 1 def test(): print(num) num = 100 print(num) print(num) test() print(num)
結果
1
—————————————————————————
UnboundLocalError Traceback (most recent call last)
6
7 print(num)
—-> 8 test()
9 print(num)
1 num = 1
2 def test():
—-> 3 print(num)
4 num = 100
5 print(num)
UnboundLocalError: local variable ‘num’ referenced before assignment
ローカル変数とグローバル変数の名前が同じで、明示的にグローバル変数を使う方法は、global キーワードを使います。
関数でグローバル変数を呼び出す例
# 関数でグローバル変数を呼び出す方法 num = 1 def test(): global num print(num) num = 100 print(num) print(num) test()
結果
1
1
100
100
ローカル変数を関数の外で呼び出すことはできません。
# ローカル変数を関数の外で呼び出した場合 num = 1 def test(): local_num = 100 print(local_num) print(num) test() print(local_num) #エラー
結果
100
—————————————————————————
NameError Traceback (most recent call last)
6 print(num)
7 test()
—-> 8 print(local_num) #エラー
NameError: name ‘local_num’ is not defined
参考になった書籍
プログラミングを少しでも経験がありPython の文法を学習する場合は、「入門 Python 3」が良いと思います。長く使えます。
「退屈なことはPython にやらせよう」はオブジェクト指向の解説がないです。代わりにPythonを使った便利な実例が初心者には嬉しい内容です。正規表現から、簡単なスクレイピング 、画像操作などあります。ただし、中級者以上には少し物足りないかもしれません。
Pythonサンプルのダウンロード
ここでダウンロードする「function2.ipynb」ファイルは、このPython動画で使用したものです。
Python入門一覧
- Python入門 クラスの継承とオーバーライド(動画あり)
- Python入門 オブジェクト指向について、クラスの作り方(動画あり)
- Python入門 lambda関数の使い方、map関数の使い方(動画あり)
- Python入門 位置引数、キーワード引数、デフォルト引数、便利な引数の使い方(動画あり)
- Python入門 グローバル変数とローカル変数(動画あり)
- Python入門 モジュールのインポートとrandomモジュール(動画あり)
- Python入門 関数の定義方法(動画あり)
- Python入門 内包表記(動画あり)
- Python入門 zip関数(動画あり)
- Python入門 for in文の活用(動画あり)
- Python入門 for in文の基本(動画あり)
- Python入門 三項演算子(動画あり)
- Python入門 if文の使い方2 while文の使い方(動画あり)
- Python入門 if文の使い方(動画あり)
- Python入門 浅いコピーと深いコピー(動画あり)
- Python入門 参照渡し(動画あり)
- Python入門 集合(動画あり)
- Python 入門 辞書(動画あり)
- Python 入門 タプルについて(動画あり)
- Python入門 リストのメソッド(動画あり)
- Python入門 リストのスライス(動画あり)
- Python入門 リスト
- Python入門 BMI課題 (動画あり)
- Python入門 文字列の連結とフォーマット1(動画あり)
- Python入門 文字列のフォーマット2(動画あり)
- Python入門 エスケープと型変換とinput()の使い方(動画あり)
- Python入門 pep8(動画あり)
- Python入門 変数の練習(動画あり)
- Python入門 変数(動画あり)
- Python入門 文字列(動画あり)
- Python入門 演算子(動画あり)
- Python入門 Python をはじめよう! (動画あり)