切換
舊版
前往
大廳
主題

Python筆記Day14-變數的LEGB

萬念俱灰的人最強 | 2019-08-12 01:16:27 | 巴幣 0 | 人氣 52

在講本地變數和全域變數之前,我們要先了解到LEGB原則。

LEGB什麼意思呢?
Local
Enclosing functions
Global(模組)
Built-in

當我們在搜尋變數名稱的時候,會先從Local端先行尋找,再搜尋functions中是否有對應宣告,以此類推到Built-in(Python內建函數中)。

讓我們看下範例:

x = 5
f = lambda x:x**2   # x is local
print(f(3))
現在我們有兩個x變數,但是兩個變數所作用的範圍不同,改變外頭的x數值,並不會改變我們f匿名函數裡面的x數值,
所以說即使我們x再怎麼變化,f(3)都會是9。
name = "This is a global name"
def greeting():
    
# Enclosing function
    name = "Peter"  # Enclosing function locals
    def hello():
        
print("Hello"+name)

    hello()
greeting()
和剛剛一樣外面的name不會影響到greeting()裡面的name,故hello()出來的name是Peter而不是This is a global name。

print(name) # Global
輸出的很自然而然就是This is a global name。

print(len)  # Built-in function
由於我們這個程式完完全全沒有提到len這個變數,所以Python就會跑去內部找找看,於是找到了。
<built-in function len>

參考至:Tibame Python教程

題外話:今天幫人代班賺了點外快,送完公文處理完事情,就能看書吹冷氣,蒸蚌。






創作回應

更多創作