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

相關文章
相關標籤/搜索