名稱查詢,確定作用域,覆蓋

2021-08-05 18:31:43 字數 475 閱讀 2386

訪問乙個屬性時,直譯器必須在三個命名空間中的乙個找到他。

首先從區域性命名空間開始,如果沒有找到,直譯器將繼續查詢全域性命名空間。

如果這也失敗了,它將在內建空間名稱裡查詢。如果最後的嘗試也失敗了,將會報nameerror。

區域性空間名稱中找到的名字會隱藏全域性或內建命名空間的對應物件。這就相當於覆蓋了那個全域性變數

def foo():

bar = 299

print("in foo,bar is",bar)

bar = 101

print("in main,bar is",bar)

foo()

in main,bar is 101

in foo,bar is 299

foo()函式區域性命名空間裡的bar變數覆蓋了全域性的bar變數。

雖然bar純在域全域性命名空間裡,但程式首先找到的是區域性命名空間裡的那個,所以覆蓋了全域性的哪乙個。

T SQL 游標名稱的作用域

microsoft sql server 2000 支援 declare cursor 語句上的 global 和 local 關鍵字以定義游標名稱的作用域。global 指定游標名稱對連線是全域性性的。local 指定游標名稱對含有 declare cursor 語句的儲存過程 觸發器或批處理是區...

(十八)作用域 作用域鏈 查詢變數案例分析

作用域由建立時候決定的並不是執行時候 輸出是函式本身 區域性作用域到全劇作用域查詢 var obj console.log obj.fn undefined var a 2 function fn fn a is undefined 此處存在變數提公升 但是變數宣告之後並沒有直接賦值而是undefi...

Python函式作用域的查詢順序

1.什麼是legb?l local 函式內部作用域 e enclosing 函式內部與內嵌函式之間 g global 全域性作用域 b build in 內建作用域 2.它們是作什麼用的 為什麼非要介紹這個呢?或者說它們的作用是什麼?原因是因為我們的在學習python函式的時候,經常會遇到很多定義域...