python和ruby变量作用域对比

python:

1 a = 0
2 def f():
3     a = 9
4     print a
5 
6 f()
7 print a

打印出来是9和0

a = 0
def f():
    print a

f()
print a

打印出来是0和0

python调用f函数,执行print a的时候,会先在函数的作用域里查找是否有a这个变量,没有找到再到全局的作用域查找a这个变量。

ruby:

1 a = 0
2 def f()
3     a = 9
4     puts a
5 end
6 f()
7 puts a

 打印出来是9和0

1 a = 0
2 def f()
3     puts a
4 end
5 f()
6 puts a

会报错

undefined local variable or method `a' for main:Object(NameError)

ruby解释器是逐行执行代码,遇到module,class和定义函数的地方会改变作用域,代码只能访问本作用域下面的变量。

详细介绍看 http://9esuluciano.iteye.com/blog/122915

posted @ 2013-07-26 15:00  冰吻的夜  阅读(236)  评论(0)    收藏  举报