現在Recursionに取り組んでいる。 そこで学んだことをメモする。
スコープ
データや関数の影響範囲のこと。
ローカルスコープとグローバルスコープがあり、 ローカルスコープは特定のクラスや関数内の、制限された領域のこと。 ローカルスコープ内で定義された変数・関数はグローバルからばアクセスできない。 一方グローバルスコープは、プログラム上の全ての場所からアクセスできる。
更新方法
例えば以下のような場合を考える。
msg = "hello world" def func1(): print(msg) # グローバルのmsgを読み取ることは可能
このプログラムは問題なく起動する。
ただしfunc1()
を以下のように更新するとエラーが発生する。
def func1(): print(msg) msg = "good morning" # UnboundLocalError: local variable 'msg' referenced before assignment
これはグローバルスコープのmsg
をローカルスコープ内で更新しようとしたため。
このエラーを回避するには次のようにglobal
キーワードをつける。
def func1(): global msg msg = "good morning"