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