【Python】関数とスコープについて書いてみた
まず、スコープとは・・・「変数の有効範囲」定義した変数を使うことが出来る範囲のこと。
ローカル変数とは
関数の中で代入した変数は、ローカル変数となります。
def func(): # ---------ここから------------
a = 1 # ローカル変数
print(a) # ---ここまでローカルスコープ---
func()
実行結果
1
グローバル変数とは
関数の外で代入された変数は、グローバル変数となります。
a = 1 # グローバル変数
def func1():
print(a)
def func2():
print(a)
func1()
func2()
実行結果
1
ローカルとグローバルで同じ変数名に代入
a = 'チョコレート' # グローバル変数
def food():
a = 'ケーキ' # ローカル変数
print(a)
food()
print(a)
実行結果
ケーキ
チョコレート
①aにチョコレートを代入
②food呼び出し
③aにケーキ代入
④print(a)でケーキ表示
⑤print(a)でチョコレート
関数内でグローバル変数に代入
a = 'チョコレート' # グローバル変数
def food():
global a
a = 'ケーキ' # グローバル変数
print(a)
food()
print(a)
実行結果
ケーキ
ケーキ
①aにチョコレートを代入
②food呼び出し
③global文でグローバル変数aを使うことを宣言
④aにケーキ代入
⑤print(a)でケーキ表示
⑥print(a)でケーキ表示