Umfang in Ruby und Python

Ich habe gleichzeitig Ruby und Python gelernt und eines der Dinge, die mir aufgefallen sind, ist, dass diese beiden Sprachen den Umfang unterschiedlich zu behandeln scheinen. Hier ist ein Beispiel für das, was ich meine:

# 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"

Es scheint, dass def block auf Variablen zugreifen kann, die in Python außerhalb seines unmittelbaren Bereichs deklariert wurden, jedoch nicht in Ruby. Kann jemand bestätigen, ob mein Verständnis korrekt ist? Und wenn ja, ob eine dieser Betrachtungsweisen bei der Programmierung häufiger vorkommt?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage