Ámbito en Ruby y Python.

He estado aprendiendo Ruby y Python al mismo tiempo y una de las cosas que noté es que estos dos idiomas parecen tratar el alcance de manera diferente. Aquí hay un ejemplo de lo que quiero decir:

# 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 el bloque def puede acceder a las variables declaradas fuera de su alcance inmediato en Python pero no en Ruby. ¿Puede alguien confirmar si mi comprensión es correcta? ¿Y si es así, si una de estas formas de pensar el alcance es más común en la programación?

Respuestas a la pregunta(3)

Su respuesta a la pregunta