創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

這篇文章給大家分享的是有關(guān)python中縮進(jìn)的案例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
Python中的縮進(jìn)(Indentation)決定了代碼的作用域范圍。這一點和傳統(tǒng)的c/c++有很大的不同(傳統(tǒng)的c/c++使用花括號花括號{}符決定作用域的范圍;python使用縮進(jìn)空格來表示作用域的范圍,相同縮進(jìn)行的代碼是處于同一范圍)。
每行代碼中開頭的空格數(shù)(whitespace)用于計算該行代碼的縮進(jìn)級別(Indentation level),注意一個Tab會被替換為1~8個Space(具體的空格數(shù)量,不同的編譯器有不同的數(shù)量),縮進(jìn)級別為0表示無縮進(jìn)空格。
在一個源文件不建議同時使用空格和制表縮進(jìn)符,當(dāng)使用別人代碼的時候幾乎是不可能知道別人使用的是空格還是制表符,這時最好統(tǒng)一縮進(jìn),在IDEL編輯器中可以使用 Edit > Untabify Region 將任何制表符轉(zhuǎn)化為空格。
Python中的每一條語句都有一個縮進(jìn)級別,并且縮進(jìn)級別會使用棧的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲。在開始讀取文件之前,0(表示縮進(jìn)級別為0,無縮進(jìn))會被首先壓入棧中。然后從文件開頭到末尾,依次讀取每行邏輯代碼,每行邏輯代碼的縮進(jìn)級別都會和棧頂值進(jìn)行比較,如果相等,那么什么都不會發(fā)生;如果比棧頂值大的話,那么該行邏輯代碼的縮進(jìn)級別就會被壓入棧中,同時會生成一個縮進(jìn)標(biāo)記(INDENT TOKEN);如果比棧頂值小的話,那么棧中所有比該行邏輯代碼縮進(jìn)級別大的值都會從棧中移除,并且還會生成一個擴(kuò)展標(biāo)記(DEDENT TOKEN)。
下面是一個正確的縮進(jìn)案例:
def perm(l):#0 # Compute the list of all permutations of l if len(l) <= 1:# 1 return [l]# 2 r = []# 3 for i in range(len(l)):# 4 s = l[:i] + l[i+1:]# 5 p = perm(s)# 6 for x in p:# 7 r.append(l[i:i+1] + x)# 8 return r# 9
上面的#0行,縮進(jìn)0個字符,由于文件讀取之前0已經(jīng)被壓入棧中了,所以棧中的數(shù)據(jù)不會發(fā)生改變。#1縮進(jìn)4個字符,4被壓入棧中。#2縮進(jìn)18個字符,18被壓入棧中。#3縮進(jìn)4個字符,18被彈出棧,棧頂值又為4了。#4和#3縮進(jìn)一樣,所以不更新棧數(shù)據(jù)。#5縮進(jìn)13個字符,所以13被壓入棧中。#5、#6和#7的縮進(jìn)一樣,不更新棧數(shù)據(jù)。#8縮進(jìn)14個字符,14被壓入棧中。#9的縮進(jìn)4個字符,所以棧中的13和14都會彈出,棧頂值又恢復(fù)為4。
下面是一個錯誤的案例
def perm(l): #1 error: first line indented for i in range(len(l)): #2 error: not indented s = l[:i] + l[i+1:] p = perm(l[:i] + l[i+1:]) #3 error: unexpected indent for x in p: r.append(l[i:i+1] + x)#4 return r #5 error: inconsistent dedent
#1、#2和#3處的錯誤解釋的很清楚了。#5的縮進(jìn)級別在棧中找不到所以出錯,#5處的縮進(jìn)級別是14,比它的上面一行縮進(jìn)級別18,所以在#5處應(yīng)該進(jìn)行出棧處理,但是在棧中找不到14這個級別,所以出錯。
又比如:
if True:
print("hello girl")
else:
print("hello boy")
print("end")最后一行代碼的縮進(jìn)級別是1,而且比上一行代碼的縮進(jìn)級別小,所以應(yīng)該出棧處理,但是在出站的時候找不到棧中以前有1的級別,所以報錯。修改這個錯誤,只需要將最后一行的空格去掉就可以。
感謝各位的閱讀!關(guān)于python中縮進(jìn)的案例分析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
新聞名稱:python中縮進(jìn)的案例分析-創(chuàng)新互聯(lián)
標(biāo)題來源:http://www.chinadenli.net/article2/pcsic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、定制開發(fā)、品牌網(wǎng)站設(shè)計、網(wǎng)站導(dǎo)航、小程序開發(fā)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容