ローカル変数とグローバル変数|Pythonのお勉強

ローカル変数とは、関数の中で定義され、関数の中だけで使える変数です。

グローバル変数とは、関数の外で定義され、関数の中からでも外からでも使える変数です。

ローカル変数は小文字、グローバル変数は大文字で書く決まり(?)があります。

グローバル変数は関数内で変更できず、変更しようとするとエラーが出ますが、それでも変更したい場合は「global」分を使います。

【確認】ローカル変数が関数内のみで有効である

確認するために、関数内でローカル変数を定義して、その変数を関数外で出力しようとします。

ご覧の通りエラーとなりました。エラーメッセージは以下の通りです。

nc.py", line 7, in <module>
    print(f"Local var is {local}")
NameError: name 'local' is not defined

【確認】グローバル変数が関数内で有効である

グロバール変数なので、関数外で定義し、それを関数の中でprintします。

しっかり出力できました。

【確認】グローバル変数は関数内で変更できない

グローバル変数は関数内で変更できません。確認するために、グローバル変数を定義し、関数内で変更を試行し、関数外でprintによってグローバル変数の中を確認します。

結果は以下の通りです。

>>> 
*** Remote Interpreter Reinitialized ***
Finally, It's 100 dollars.
>>> 

【確認】グローバル変数を「global」分で関数内で変更する

グローバル変数GLOBALを関数内での変更を試みます。その際は「global」分を使用します。3,4行目に注目です。

そして結果は以下の通りです。

>>> 
*** 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}")
よっさん
  • よっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後某日系IT企業でグローバル案件に携わる。マレーシアに1.5年赴任した経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。

コメントする

メールアドレスが公開されることはありません。