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