Pythonのグローバル変数
今回は、Pythonのグローバル変数について説明します。
Pythonのグローバル変数は、少しクセがありますので整理してみましょう。
関数外で定義した変数を参照する
関数の外で定義した変数は、関数の中で参照することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
### 変数定義 val = 100 ### 関数定義 def func(): ### 変数参照 print(val) ### 関数実行 func() ### 変数参照 print(val) |
実行例
> python global1.py
100
100
関数外で定義した変数と同じ名前の変数を関数内で定義する
関数の中で関数の外と同じ変数名を使うと、別変数として扱われます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
### 変数定義 val = 100 ### 関数定義 def func(): ### 変数定義 val = 200 ### 変数参照 print(val) ### 関数実行 func() ### 変数参照 print(val) |
関数の外で定義した変数と同じ名前の変数を関数の中で定義しても、関数の外ではその値は反映されません。
実行例
> global2.py
200
100
関数外で定義した変数を関数内で変更する
関数の外で定義した変数を関数の中でインクリメントしようとするとエラーになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
### 変数定義 val = 100 ### 関数定義 def func(): ### 変数定義 val += 100 ### 変数参照 print(val) ### 関数実行 func() ### 変数参照 print(val) |
これは関数の中で変数を定義していないのに、変数の値をインクリメントしようとしているためにエラーが発生します。
実行例
> global3.py
Traceback (most recent call last):
File "global3.py", line 14, in <module>
func()
File "global3.py", line 8, in func
val += 100
UnboundLocalError: local variable 'val' referenced before assignment
globalキーワードを使って変数を修正する
関数の外で定義した変数を関数の中で変更するには、globalキーワードを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
### 変数定義 val = 100 ### 関数定義 def func(): ### 変数定義 global val val += 100 ### 変数参照 print(val) ### 関数実行 func() ### 変数参照 print(val) |
関数の中で変数の値を変更すると、関数の外でもその値が反映されます。
実行例
> python global4.py
200
200