1.什麼是legb?
l:local 函式內部作用域
e:enclosing 函式內部與內嵌函式之間
g:global 全域性作用域
b:build-in 內建作用域
2.它們是作什麼用的
為什麼非要介紹這個呢?或者說它們的作用是什麼?
原因是因為我們的在學習python函式的時候,經常會遇到很多定義域的問題,全部變數,內部變數,內部嵌入的函式,等等,python是如何查詢的呢?以及python又是按照什麼順序來查詢的呢?這裡做乙個順序的說明
3.順序是什麼
跟名字一樣,python在函式裡面的查詢分為4種,稱之為legb,也正是按照這種順序來查詢的。
首先,是local,先查詢函式內部4.舉例說明然後,是enclosing,再查詢函式內部與嵌入函式之間(是指在函式內部再次定義乙個函式)
其次,是global,查詢全域性
最後,是build-in,內建作用域
ex1
1 passline = 6023deffunc(val):
4if val >=passline:
5print('
pass')
6else:7
print('
failed')
89 func(89)
1011
''''''''''''
12pass
13 [finished in
0.2s]
14''''''''''''
python函式首先查詢local,在區域性變數作用域裡並沒有passline的定義,然後發現函式內部並沒有內嵌函式,這時python開始查詢global,在全域性裡查詢到passline的定義,被呼叫。ex2
1defmax(val1, val2):
2return
max(val1, val2)34
print(max(90, 100))56
'''''''''
7100
8[finished in 0.1s]
9'''''''''
max函式裡面直接呼叫另外乙個函式,呼叫的max()(注意兩個函式的大小寫不一樣),該函式並沒有被定義,但是卻屬於我們上述的第四種,屬於build-in函式,既是在python標準庫里的函式,內建的,可以直接呼叫的。最後一步才會查詢到這裡關於第二種,屬於內嵌函式,即使在函式裡面再次定義乙個函式,這時會首先查詢local函式裡面是否有定義,然後才會查詢函式裡面內嵌函式裡面有沒有定義,這一種有專門的名詞,叫做閉包,閉包將在另外文章裡專門寫到
Python 函式作用域
python中變數作用域分4種情況 x max 1,6 max為系統變數,它的作用域為python的所有模組 y 1 y為全域性變數,它的作用域為當前模組 defouter i 3 i的作用域為當前函式,包括巢狀函式 definner count 2 count為區域性變數,作用域只在當前函式有效函...
Python 函式的作用域
python中的作用域有4種 名稱介紹 llocal,區域性作用域,函式中定義的變數 eenclosing,巢狀的父級函式的區域性作用域,即包含此函式的上級函式的區域性作用域,但不是全域性的 bgloba,全域性變數,就是模組級別定義的變數 gbuilt in,系統固定模組裡面的變數,比如int,b...
Python中的函式作用域
在python中,乙個函式就是乙個作用域 name xiaoyafei def change name name 肖亞飛 print 在change name裡的name name change name 呼叫函式 print 在外面的name name 執行結果如下 在change name裡的n...