Pythonスコープ
変数は、作成された領域内からのみ使用できます。これはスコープと呼ばれます。
ローカルスコープ
関数内で作成された変数は、その関数のローカルスコープに属し、その関数内でのみ使用できます。
例
関数内で作成された変数は、その関数内で使用できます。
def myfunc():
x = 300
print(x)
myfunc()
関数内関数
上記の例で説明したように、変数x
は関数の外部では使用できませんが、関数内のすべての関数で使用できます。
例
ローカル変数には、関数内の関数からアクセスできます。
def myfunc():
x = 300
def myinnerfunc():
print(x)
myinnerfunc()
myfunc()
グローバルスコープ
Pythonコードの本体で作成された変数はグローバル変数であり、グローバルスコープに属します。
グローバル変数は、グローバルおよびローカルの任意のスコープ内から使用できます。
例
関数の外部で作成された変数はグローバルであり、誰でも使用できます。
x = 300
def myfunc():
print(x)
myfunc()
print(x)
変数の命名
関数の内部と外部で同じ変数名を使用して操作する場合、Pythonはそれらを2つの別個の変数として扱います。1つはグローバルスコープ(関数の外部)で使用可能で、もう1つはローカルスコープ(関数の内部)で使用可能です。
例
関数はローカルx
を出力し、次にコードはグローバルを出力しx
ます:
x = 300
def myfunc():
x = 200
print(x)
myfunc()
print(x)
グローバルキーワード
グローバル変数を作成する必要があるが、ローカルスコープでスタックしている場合は、
global
キーワードを使用できます。
キーワードはglobal
変数をグローバルにします。
例
キーワードを使用する場合global
、変数はグローバルスコープに属します。
def myfunc():
global x
x = 300
myfunc()
print(x)
また、global
関数内のグローバル変数に変更を加える場合は、キーワードを使用します。
例
関数内のグローバル変数の値を変更するには、次のglobal
キーワードを使用して変数を参照します。
x = 300
def myfunc():
global x
x = 200
myfunc()
print(x)