本文為大家介紹了Python函數作用域的查找順序,供大家參考,具體內容如下
1.什麼是LEGB?
L:local 函數內部作用域
#E:enclosing 函數內部與內嵌函數之間
G:global 全域作用域
#B:build-in 內建作用域
#2.LEGB是作什麼用的?
為什麼非要介紹這個呢?或者說它們的作用是什麼?
原因是因為我們的在學習Python函數的時候,經常會遇到很多定義域的問題,全部變量,內部變量,內部嵌入的函數,等等,Python是如何找到的呢?而Python又是依照什麼順序來查找的呢?這裡做一個順序的說明
3.順序是什麼
跟名字一樣,Python在函數裡面的查找分為4種,稱之為LEGB,也正是依照這種順序來查找的。
首先,是local,先查找函數內部
然後,是enclosing,再查找函數內部與嵌入函數之間(是指在函數內部再次定義一個函數)
其次,是global ,尋找全域
最後,是build-in,內建作用域
4.舉例說明
ex1
passline = 60 def func(val): if val >= passline: print('pass') else: print('failed') func(89) '''''''''''' pass [Finished in 0.2s] ''''''''''''
Python函數首先查找local,在局部變數作用域裡並沒有passline的定義,然後發現函數內部並沒有內嵌函數,這時Python開始查找global,在全域裡查找到passline的定義,被呼叫。
ex2
def Max(val1, val2): return max(val1, val2) print(Max(90, 100)) ''''''''' 100 [Finished in 0.1s] '''''''''
Max函數裡面直接呼叫另外一個函數,呼叫的max()(注意兩個函數的大小寫不一樣),該函數並沒有被定義,但是卻屬於我們上述的第四種,屬於build-in函數,既是在python標準庫裡的函數,內置的,可以直接調用的。最後一步才會查找到這裡
關於第二種,屬於內嵌函數,即使在函數裡面再次定義一個函數,這時會先找local函數裡面是否有定義,然後才會找函數裡面內嵌函數裡面有沒有定義,這一種有專門的名詞,叫做閉包,閉包在之前一些文章都有介紹,希望大家閱讀。
以上就是本文的全部內容,希望對大家的學習有所幫助。
更多Python函數作用域的LEGB順序相關文章請關注PHP中文網!

使用NumPy創建多維數組可以通過以下步驟實現:1)使用numpy.array()函數創建數組,例如np.array([[1,2,3],[4,5,6]])創建2D數組;2)使用np.zeros(),np.ones(),np.random.random()等函數創建特定值填充的數組;3)理解數組的shape和size屬性,確保子數組長度一致,避免錯誤;4)使用np.reshape()函數改變數組形狀;5)注意內存使用,確保代碼清晰高效。

播放innumpyisamethodtoperformoperationsonArraySofDifferentsHapesbyAutapityallate AligningThem.itSimplifififiesCode,增強可讀性,和Boostsperformance.Shere'shore'showitworks:1)較小的ArraySaraySaraysAraySaraySaraySaraySarePaddedDedWiteWithOnestOmatchDimentions.2)

forpythondataTastorage,choselistsforflexibilityWithMixedDatatypes,array.ArrayFormeMory-effficityHomogeneousnumericalData,andnumpyArraysForAdvancedNumericalComputing.listsareversareversareversareversArversatilebutlessEbutlesseftlesseftlesseftlessforefforefforefforefforefforefforefforefforefforlargenumerdataSets; arrayoffray.array.array.array.array.array.ersersamiddreddregro

Pythonlistsarebetterthanarraysformanagingdiversedatatypes.1)Listscanholdelementsofdifferenttypes,2)theyaredynamic,allowingeasyadditionsandremovals,3)theyofferintuitiveoperationslikeslicing,but4)theyarelessmemory-efficientandslowerforlargedatasets.

toAccesselementsInapyThonArray,useIndIndexing:my_array [2] accessEsthethEthErlement,returning.3.pythonosezero opitedEndexing.1)usepositiveandnegativeIndexing:my_list [0] fortefirstElment,fortefirstelement,my_list,my_list [-1] fornelast.2] forselast.2)

文章討論了由於語法歧義而導致的Python中元組理解的不可能。建議使用tuple()與發電機表達式使用tuple()有效地創建元組。 (159個字符)

本文解釋了Python中的模塊和包裝,它們的差異和用法。模塊是單個文件,而軟件包是帶有__init__.py文件的目錄,在層次上組織相關模塊。

文章討論了Python中的Docstrings,其用法和收益。主要問題:Docstrings對於代碼文檔和可訪問性的重要性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載
最受歡迎的的開源編輯器