朋友們挠将,如需轉(zhuǎn)載請標明出處:https://blog.csdn.net/jiangjunshow
聲明:在人工智能技術(shù)教學期間淹接,不少學生向我提一些python相關(guān)的問題绘面,所以為了讓同學們掌握更多擴展知識更好地理解AI技術(shù),我讓助理負責分享這套python系列教程拭卿,希望能幫到大家墨礁!由于這套python教程不是由我所寫醋奠,所以不如我的AI技術(shù)教學風趣幽默榛臼,學起來比較枯燥;但它的知識點還是講到位的了窜司,也值得閱讀沛善!想要學習AI技術(shù)的同學可以點擊跳轉(zhuǎn)到我的教學網(wǎng)站。PS:看不懂本篇文章的同學請先看前面的文章塞祈,循序漸進每天學一點就不會覺得難了金刁!
Python創(chuàng)建變量是在所謂的命名空間中進行的。也就是說议薪,在代碼中變量名被賦值的位置決定了這個變量名能被訪問到的范圍尤蛮。
作用域的定義是在Python賦值的時候生成的。由于Python變量名不需要提前聲明斯议,所以Python將一個變量名被賦值的地點關(guān)聯(lián)為(綁定給)一個特定的命名空間产捞。換句話說,在代碼中給一個變量賦值的地方?jīng)Q定了這個變量將存在于哪個命名空間哼御,也就是它可見的范圍坯临。
除打包代碼之外,函數(shù)還為程序增加了一個額外的命名空間層:在默認的情況下艇搀,一個函數(shù)的所有變量名都是與函數(shù)的命名空間相關(guān)聯(lián)的尿扯。這意味著:
?一個在def內(nèi)定義的變量名能夠被def內(nèi)的代碼使用。不能在函數(shù)的外部引用這樣的變量名焰雕。
?def之中的變量名與def之外的變量名并不沖突,即使是使用在別處的相同的變量名芳杏。一個在def之外被賦值的變量X與在這個def之中的賦值的變量X是完全不同的變量矩屁。
在任何情況下辟宗,一個變量的作用域總是由在代碼中被賦值的地方所決定。變量可以在3個不同的地方分配吝秕,分別對應(yīng)3種不同的作用域:
?如果一個變量在def內(nèi)賦值泊脐,它被定位在這個函數(shù)之內(nèi)。
?如果一個變量在一個嵌套的def中賦值烁峭,對于嵌套的函數(shù)來說容客,它是非本地的。
?如果在def之外賦值约郁,它就是整個文件全局的缩挑。
例如,在下面的模塊文件中鬓梅,X = 99這個賦值語句創(chuàng)建了一個名為X的全局變量(在這個文件中可見)供置,但是X = 88這個賦值語句創(chuàng)建了一個本地變量X(只是在def語句內(nèi)是可見的)。
X = 99
def func():
X = 88
盡管這兩個變量名都是X绽快,但是作用域可以把它們區(qū)別開來芥丧。實際上,函數(shù)的作用域有助于防止程序之中變量名的沖突坊罢,并且有助于函數(shù)成為更加獨立的程序單元续担。
作用域的用法還會對程序維護工作有著重要的影響,例如活孩,過度地使用全局作用域通常是糟糕的事情物遇。