【发布时间】:2013-02-09 03:55:32
【问题描述】:
我一直在同时学习 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 中则不能。有人可以确认我的理解是否正确吗?如果是这样,这些考虑范围的方式中的一种是否在编程中更常见?
【问题讨论】:
-
在 Python 方面,你是对的(显然还有更多的范围界定,但你的措辞并不矛盾)。
-
这里可能的 Python 答案:stackoverflow.com/questions/370357/…