Область применения в Ruby и Python
Я изучал Ruby и Python одновременно, и я заметил, что эти два языка по-разному относятся к области видимости. Вот пример того, что я имею в виду:
# 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"
Похоже, что блок def может обращаться к переменным, объявленным вне его непосредственной области видимости в Python, но не в Ruby. Может ли кто-нибудь подтвердить, правильно ли мое понимание? И если да, то один из этих способов мышления о сфере более распространен в программировании?