#スコープとは
ある変数を利用できる範囲のこと。
スコープの範囲を超えた変数を使おうとするとエラーが起こります。
実際にRubyとPythonでスコープが異なる例を見ていきましょう。
##Rubyの場合
name = 'Mike'
def greeting()
puts ('Hello ' + name)
end
greeting() #=> error (undefined local variable)
Rubyではメソッド内ではメソッド内で定義された変数しか使えません。そのため今回、greetingメソッドではスコープ外の変数であるnameを使おうとしているのでエラーが起こるのです。
##Pythonの場合
name = 'Mike'
def greeting():
print('Hello ' + name)
x = 2
greeting() #=> Hello Mike
print(x) #=> error
Pythonではnameという変数はgreetingメソッド内まで影響を与えるため、エラーなく実行することができます。
ところがメソッド内で定義されたxという変数はメソッド外では使えないため、エラーが起きます。