Zakres w Ruby i Python

Równolegle uczę się Rubiego i Pythona, a jedną z rzeczy, które zauważyłem, jest to, że te dwa języki traktują zakres inaczej. Oto przykład tego, co mam na myśli:

# Python
a = 5
def myfunc():
  print a

myfunc() # => Successfully prints 5

# Ruby
a = 5
def myfunc
  puts a
end

myfunc # => Throws a "NameError: undefined local variable or method `a' for main:Object"

Wygląda na to, że blok def może uzyskać dostęp do zmiennych zadeklarowanych poza jego bezpośrednim zakresem w Pythonie, ale nie w Ruby. Czy ktoś może potwierdzić, czy moje zrozumienie jest prawidłowe? A jeśli tak, to czy jeden z tych sposobów myślenia o zakresie jest bardziej powszechny w programowaniu?

questionAnswers(3)

yourAnswerToTheQuestion