朋友們摘完,如需轉(zhuǎn)載請標明出處:https://blog.csdn.net/jiangjunshow
聲明:在人工智能技術(shù)教學期間,不少學生向我提一些python相關(guān)的問題酗捌,所以為了讓同學們掌握更多擴展知識更好地理解AI技術(shù),我讓助理負責分享這套python系列教程劣纲,希望能幫到大家爵憎!由于這套python教程不是由我所寫,所以不如我的AI技術(shù)教學風趣幽默混槐,學起來比較枯燥;但它的知識點還是講到位的了轩性,也值得閱讀声登!想要學習AI技術(shù)的同學可以點擊跳轉(zhuǎn)到我的教學網(wǎng)站。PS:看不懂本篇文章的同學請先看前面的文章揣苏,循序漸進每天學一點就不會覺得難了悯嗓!
讓我們看一個稍大點的例子來說明作用域的概念。假設我們在一個模塊文件中編寫了下面這個模塊文件卸察。
# Global scope
X = 99 # X and func assigned in module: global
def func(Y): # Y and Z assigned in function: locals
# Local scope
Z = X + Y # X is a global
return Z
func(1) # func in module: result=100
因為X是在模塊文件頂層注冊的脯厨,所以它是全局變量;它能夠在函數(shù)內(nèi)部進行引用坑质。同樣的原因合武,func也是全局變量;def語句在這個模塊文件頂層將一個函數(shù)對象賦值給了變量名func涡扼。
對于這個函數(shù)來說稼跳,Y和Z是本地變量(并且只在函數(shù)運行時存在),因為他們都是在函數(shù)內(nèi)部進行賦值的:Z是通過=語句賦值的吃沪,而Y是參數(shù)通過賦值來進行傳遞的汤善。
Python會依次從4個作用域來搜索變量,通常將這個搜索機制簡稱為LEGB ——[本地作用域(L),之后是上一層結(jié)構(gòu)中def或lambda的本地作用域(E)红淡,之后是全局作用域(G)卸伞,最后是內(nèi)置作用域(B)]。在第一處能夠找到這個變量名的地方停下來锉屈。如果變量名在這次搜索中沒有找到,Python會報錯垮耳。