我一直在同时学习 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 中则不能。有人可以确认我的理解是否正确吗?如果是这样,这些思考范围的方式中的一种是否在编程中更常见?