Pythonのスコープ

変数は作成された範囲内のみで使用できます。これをスコープと呼びます。

ローカルスコープ

関数内部で作成された変数はその関数のローカルスコープに属し、その関数内部でのみ使用できます。

関数内部で作成された変数はその関数内部で使用できます:

def myfunc():
  x = 100
  print(x)
myfunc()

実行例

関数内の関数

上記の例のように、変数 x は関数外部では利用できませんが、関数内部のどの関数でも利用できます:

関数内の関数からローカル変数にアクセスできます:

def myfunc():
  x = 100
  def myinnerfunc():
    print(x)
  myinnerfunc()
myfunc()

実行例

グローバルスコープ

Python コードの主体で作成された変数はグローバル変数であり、グローバルスコープに属します。

グローバル変数はどの範囲(グローバルおよびローカル)でも利用可能です。

関数外部で作成された変数はグローバル変数であり、誰でも使用できます:

x = 100
def myfunc():
  print(x)
myfunc()
print(x)

実行例

命名変数

関数内部および外部で同名の変数を使用する場合、Python はそれらを2つの異なる変数として見なします。1つはグローバル範囲で利用可能(関数外部)、もう1つはローカル範囲で利用可能(関数内部):

この関数はローカル変数 x を印刷し、その後コードはグローバル変数 x を印刷します:

x = 100
def myfunc():
  x = 200
  print(x)
myfunc()
print(x)

実行例

Global キーワード

グローバル変数を作成する必要があるが、ローカルスコープ内に卡っている場合は、global キーワードを使用できます。

global キーワードは変数をグローバル変数にします。

global キーワードを使用すると、その変数はグローバル範囲に属します:

def myfunc():
  global x
  x = 100
myfunc()
print(x)

実行例

また、関数内部でグローバル変数を変更する場合も、global キーワードを使用してください。

関数内部でグローバル変数の値を変更するには、global キーワードを使用してその変数を参照してください:

x = 100
def myfunc():
  global x
  x = 200
myfunc()
print(x)

実行例