国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-01-04 17:28:17
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了Python函數作用域的LEGB順序的相關資料,感興趣的朋友可以參考一下
 

本文為大家介紹了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 = 60def 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函數里面是否有定義,然后才會查找函數里面內嵌函數里面有沒有定義,這一種有專門的名詞,叫做閉包,閉包在之前一些文章中都有介紹,希望大家閱讀。

以上就是本文的全部內容,希望對大家的學習有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 遵化市| 土默特右旗| 龙江县| 博客| 塘沽区| 元朗区| 宜良县| 永济市| 株洲县| 阿勒泰市| 塔城市| 萨嘎县| 平和县| 临澧县| 井研县| 化隆| 阿克| 遂溪县| 曲沃县| 日照市| 屯门区| 龙里县| 南充市| 普兰县| 和顺县| 图片| 南投县| 屏东市| 仁寿县| 怀宁县| 灵石县| 娄底市| 二手房| 华蓥市| 胶州市| 车险| 大化| 清原| 攀枝花市| 奇台县| 化州市|