面試官:請說下你對 LEGB 的理解。我:呃...

面試官:請說下你對 LEGB 的理解。我:呃...

其實這個問題很簡單也很基礎,大家可能都明白,但就是不知道怎麼回答,有很多朋友在面試官提起LEGB時都蒙圈了,可能連聽都沒聽過;面試官經常會問什麼是LEGB,分別都是什麼意思呀,查詢規則是怎麼樣的?還有

LEGB經常會以一段程式碼片的形式出現在筆試中

,不清楚的朋友建議多多關注這塊的內容。今天我們就瞭解下這個

LEGB

!!!

L (Local) 區域性作用域

E (Enclosing) 閉包函式外的函式中

G (Global) 全域性作用域

B (Built - in) 內建作用域(內建函式所在模組的範圍)

變數作用域查詢規則:L –> E –> G –>B

即在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。例項如下:

面試官:請說下你對 LEGB 的理解。我:呃...

在函式巢狀中內層函式func_inner() 就是一個閉包函式。

5 全域性變數和區域性變數:

定義在函式內部的變數擁有一個區域性作用域,定義在函式外的擁有全域性作用域。

區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問。

呼叫函式時,所有在函式內宣告的變數名稱都將被加入到作用域中。

面試官:請說下你對 LEGB 的理解。我:呃...

當內部作用域想修改外部作用域的變數時,可以用global和nonlocal關鍵字

,例項程式碼:

面試官:請說下你對 LEGB 的理解。我:呃...

如果要修改巢狀作用域(enclosing 作用域,外層非全域性作用域)中的變數則需要 nonlocal 關鍵字

面試官:請說下你對 LEGB 的理解。我:呃...

內容來自:Python3 自學第11天:def 函式

【極客乾貨】從事IT行業十餘年,在移動網際網路開發,J2EE企業級開發,IOT物聯網,AI人工智慧等方面有點技術積累,熟練使用C/C++,Java,Python等程式語言。從2009年開始接觸Python,後續借空閒時間將個人熟悉的技術乾貨系統性分享給大家,也許我的分享會讓你少走一些彎路,如果您覺得還可以,請多多關注,評論和轉發,非常感謝!