python和ruby變數作用域對比

2022-08-10 01:48:19 字數 708 閱讀 4767

python:

1 a =0

2def

f():

3 a = 9

4print a56

f()7 print a

列印出來是9和0

a =0

deff():

print

af()

print a

列印出來是0和0

python呼叫f函式,執行print a的時候,會先在函式的作用域裡查詢是否有a這個變數,沒有找到再到全域性的作用域查詢a這個變數。

ruby:

1 a =0

2def

f()3 a = 9

4puts a

5end

6f()

7 puts a

列印出來是9和0

1 a =0

2def

f()3

puts a

4end

5f()

6 puts a

會報錯undefined local variable or method `a' for main:object(nameerror)

ruby直譯器是逐行執行**,遇到module,class和定義函式的地方會改變作用域,**只能訪問本作用域下面的變數。

詳細介紹看 

Ruby 標識名和變數作用域

ruby 的標識名用來指向常量,變數,方法,類和模組。標識名的首字母用來幫助我們確定標識所指向內容的作用域。ruby 的標識名區分大小寫。ruby 使用乙個約定的來幫助它區別乙個名字的用法 a 名字前面的第乙個字元表明這個名字的用法。b 區域性變數 方法引數和方法名稱應該用乙個小寫字母開頭或者用乙個...

python 變數宣告和作用域

a 3 1.建立name a 2.建立object 3 3.將name 關聯到3 這個object上 name在建立時必須關聯到乙個object name可以在建立以後指向任何乙個object 包括不同型別 全域性變數和區域性變數 1.globals 返回當前模組的全域性變數,locals返回當前所...

Python變數前 和 的作用

在python的在形參前加 和 表示動態形參 在形參前加 表示可以接受多個實參值存進陣列 def f a,b print a print b f 1,2,3 1 2,3 對於在形參前加 表示表示接受引數轉化為字典型別 def f a print a f x 1,y 2 混合運用 def f a,b,...