ローカル変数とグローバル変数|Pythonのお勉強
2021/12/11 2022/2/14
![](https://bilingual-it.work/wp/wp-content/uploads/Python-Logo.png)
ローカル変数とは、関数の中で定義され、関数の中だけで使える変数です。
グローバル変数とは、関数の外で定義され、関数の中からでも外からでも使える変数です。
ローカル変数は小文字、グローバル変数は大文字で書く決まり(?)があります。
グローバル変数は関数内で変更できず、変更しようとするとエラーが出ますが、それでも変更したい場合は「global」分を使います。
【確認】ローカル変数が関数内のみで有効である
確認するために、関数内でローカル変数を定義して、その変数を関数外で出力しようとします。
![](https://bilingual-it.work/wp/wp-content/uploads/image-119.png)
ご覧の通りエラーとなりました。エラーメッセージは以下の通りです。
nc.py", line 7, in <module>
print(f"Local var is {local}")
NameError: name 'local' is not defined
【確認】グローバル変数が関数内で有効である
グロバール変数なので、関数外で定義し、それを関数の中でprintします。
![](https://bilingual-it.work/wp/wp-content/uploads/image-120.png)
しっかり出力できました。
![](https://bilingual-it.work/wp/wp-content/uploads/image-121.png)
【確認】グローバル変数は関数内で変更できない
グローバル変数は関数内で変更できません。確認するために、グローバル変数を定義し、関数内で変更を試行し、関数外でprintによってグローバル変数の中を確認します。
![](https://bilingual-it.work/wp/wp-content/uploads/image-122.png)
結果は以下の通りです。
>>>
*** Remote Interpreter Reinitialized ***
Finally, It's 100 dollars.
>>>
【確認】グローバル変数を「global」分で関数内で変更する
グローバル変数GLOBALを関数内での変更を試みます。その際は「global」分を使用します。3,4行目に注目です。
![](https://bilingual-it.work/wp/wp-content/uploads/image-123.png)
そして結果は以下の通りです。
>>>
*** Remote Interpreter Reinitialized ***
Finally, It's 300 dollars.
>>>
今回のコードまとめ
以下に今回のコードのまとめを掲載しますが、この記事を読んでいただいていればご存知だと思いますが、#1でエラーになります。単純にコピペしても全てを実行することはできません。
# 1. Check local works only in local
print("[START] Check local works only in local")
def myFunc():
print("Define local var Bonjour!")
local = "Bonjour!"
myFunc()
print(f"Local var is {local}")
print("[END]")
# 2. Check Global works in func
print("[START] Check Global works in func")
def myFunc():
print(GLOBAL)
GLOBAL = "This egg is not white."
myFunc()
# 3. Check global can't be changed in func
def myFunc():
GLOBAL = "It's 300 dollars."
GLOBAL = "It's 100 dollars."
myFunc()
print(f"Finally, {GLOBAL}")
# 4. Check global can be changed with "global" in func
def myFunc():
global GLOBAL
GLOBAL = "It's 300 dollars."
GLOBAL = "It's 100 dollars."
myFunc()
print(f"Finally, {GLOBAL}")