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?