次のコードの multiple 関数で定義された変数 x,y が利用できる範囲(つまり有効範囲:これをスコープという)はmultiple 関数の内部だけです.変数 x,y は関数内だけで有効なローカル変数と呼ばれます.よって,次のコードのように multiple 関数のローカル変数 x を外部(12行目)から呼び出そうとするとエラーになります.
def multiple(x, y):
"""
二つの引数の積を返す
"""
print('x = ', x)
return x * y
a = 5
b = 7
c = multiple(a, b)
print('c = ', c)
print(x)
x = 5
c = 35
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-4-15f14a917bd9> in <module>
8 c = multiple(a, b)
9 print('c = ', c)
---> 10 print(x)
NameError: name 'x' is not defined
また,次のコードの6行目のように,関数の外で定義された変数 a はグローバル変数ですが,multiple 関数で用いられる変数 a はローカル変数です.よって,3行目でローカル変数 a の値を書き換えてもグローバル変数 a には影響がないので,12行目の print では 5 が表示されます.
def multiple(x, y):
"""
二つの引数の積を返す
"""
a = 10000 # ローカル変数
return x * y
a = 5 # グローバル変数
b = 7
c = multiple(a, b)
print('c = ', c)
print('a = ', a)
c = 35 a = 5
ローカル変数とグローバル変数の違いや変数のスコープについての詳細は書籍や他のWebページを参照して下さい.