みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Pythonのグローバル変数のメモ

以下の記事がとても有用だったのでメモします.

Why am I getting an UnboundLocalError when the variable has a value? - Programming FAQ - Python 3

以下のスクリプトは実行されます.

x = 10
def bar():
    print(x)
bar()
10

x=1を追加すると,UnboundLocalErrorが発生します.

x = 10
def bar():
    print(x)
    x = 1
bar()
Exception has occurred: UnboundLocalError
local variable 'x' referenced before assignment
  File "C:\Users\a\b\r.py", line 5, in bar
    print(x)
  File "C:\Users\a\b\r.py", line 9, in <module>
    bar()

Pythonのスコープについて

In Python, variables that are only referenced inside a function are implicitly global. If a variable is assigned a value anywhere within the function’s body, it’s assumed to be a local unless explicitly declared as global. *1

関数内で変数を参照するだけならば,その変数はグルーバル変数になる.関数内で変数に代入すると,その変数はローカル変数となる.グローバル変数として扱うために,globalで明示しなければならない.