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?

questionAnswers(3)

yourAnswerToTheQuestion