Escopo em Ruby e Python
Eu tenho aprendido Ruby e Python ao mesmo tempo e uma das coisas que notei é que essas duas linguagens parecem tratar o escopo de maneira diferente. Aqui está um exemplo do que quero dizer:
# 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"
Parece que o def block pode acessar variáveis declaradas fora de seu escopo imediato em Python, mas não em Ruby. Alguém pode confirmar se o meu entendimento está correto? E se sim, se uma dessas formas de pensar sobre o escopo é mais comum na programação?