python和ruby变量做用域对比

python:python

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

打印出来是9和0ruby

a = 0
def f():
    print a

f()
print a

打印出来是0和0函数

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

ruby:code

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

 打印出来是9和0blog

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

会报错ci

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

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

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

相关文章
相关标签/搜索