次のコードの 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ページを参照して下さい.