3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python:グローバル変数

Last updated at Posted at 2019-07-25
>>> gvalue = 0
>>> def t():
...     gvalue = 1
...
>>> t()
>>> gvalue
0
>>>

スコープが内側になると変数は隔離されます

>>> gvalue = 0
>>> def t():
...     gvalue = 1
...     print(gvalue)
...
>>> t()
1
>>> gvalue
0
>>>

代入時は隔離されますが、参照のみならグローバル変数を利用できます。
ただし、

>>> gvalue = 0
>>> def t():
...     print(gvalue)
...     gvalue = 1
...
>>> t()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in t
UnboundLocalError: local variable 'gvalue' referenced before assignment
>>>

グローバル変数として利用してから、代入を行うと、
前者はグローバル変数、後者はローカル(関数内)変数と解釈が食い違うため、エラーが発生します。
それを避けるために、グローバル変数を利用するときは

>>> gvalue = 0
>>> def t():
...     global gvalue
...     gvalue = 1
...
>>> gvalue
0
>>> t()
>>> gvalue
1

のようにglobalで「グローバル変数を使う」と宣言してください。
(関数の一番最初で宣言するのが吉です。)

#まとめ

グローバル変数を使うとき
参照のみならグローバル宣言を行わなくてもよい。
(宣言してもいいしそっちのほうがわかりやすいけれど)
グローバル変数を操作する場合はしっかり宣言しましょう。

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?