詳解Python函式作用域的LEGB順序

2022-10-04 22:00:24 字數 1127 閱讀 5371

1.什麼是legb?

l:local 函式內部作用域

e:enclosing 函式內部與內嵌函式之間

g:global 全域性作用域

b:build-in 內建作用域

2.legb是作什麼用的?

為什麼非要介紹這個呢?或者說它們的作用是什麼?

原因是因為我們的在學習python函式的時候,經常會遇到很多定義域的問題,全部變數,內部變數,內部嵌入的函式,等等,python是如何查詢的呢?以及python又是按照什麼順序來查詢的呢?這裡做乙個順序的說明

3.順序是什麼

跟名字一樣,p在函式裡面的查詢分為4種,稱之為legb,也正是按照這種順序來查詢的。

首先,是local,先查詢函式內部

然後,是enclosing,再查詢函式內部與嵌入函式之間(是指在函式內部再次定義乙個函式)

其次,是global,查詢全域性

最後,是build-in,內建作用域

4.舉例說明

ex1passline = 60

def func(val):

if val >= passline:

print('pass')

exaxakqgwglse:

print('failed')

func(89)

''''''''''''

pass

[finished in 0.2s]

''''''''''''

python函式首先查詢local,在區域性變數作用域裡並沒有passline的定義,然後發現函式內部並沒有內嵌函式,這時python開始查xaxakqgwg找global,在全域性裡查詢到passline的定義,被呼叫。

ex2def max(val1, val2):

return max(val1, val2)

print(max(90, 100))

'''''''''

100[finished in 0.1s]

'''''''''

max函式裡面直接呼叫另外乙個函式,呼叫的max()(注意兩個函式的大小寫不一樣),該函式並沒有被定義,但是卻屬於我們上述的第四種,屬於build-in函式,既是在python標準庫里的函式,內建的,可以直接呼叫的。最後一步才會查詢到這裡

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程式的重要組成部分。所謂函式就是實現某一特定功能的 段,可重複使用,提高了 的利用率。python除了可以直接使用內建函式,還支援自定義函式。使用def關鍵字,格式如下 def函式名 引數列表 函式體函式的返回值 函式的返回值用return語句返回,函式體內部的語句在執行時,一旦執...