關(guān)于python中縮進(jìn)的簡介-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元山城做網(wǎng)站,已為上家服務(wù),為山城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

這篇文章主要介紹了關(guān)于python中縮進(jìn)的簡介,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

Python中的縮進(jìn)(Indentation)決定了代碼的作用域范圍。這一點(diǎn)和傳統(tǒng)的c/c++有很大的不同(傳統(tǒng)的c/c++使用花括號(hào)花括號(hào){}符

決定作用域的范圍;python使用縮進(jìn)空格來表示作用域的范圍,相同縮進(jìn)行的代碼是處于同一范圍)。

每行代碼中開頭的空格數(shù)(whitespace)用于計(jì)算該行代碼的縮進(jìn)級(jí)(Indentationlevel),注意一個(gè)Tab會(huì)被替換為1~8個(gè)Space(具體的空格數(shù)量,不同的編譯器有不同的數(shù)量),縮進(jìn)級(jí)別為0表示無縮進(jìn)空格。

在一個(gè)源文件不建議同時(shí)使用空格和制表縮進(jìn)符,當(dāng)使用別人代碼的時(shí)候幾乎是不可能知道別人使用的是空格還是制表符,這時(shí)最好統(tǒng)一縮進(jìn),在IDEL編輯器中可以使用 Edit > Untabify Region 將任何制表符轉(zhuǎn)化為空格。

Python中的每一條語句都有一個(gè)縮進(jìn)級(jí)別,并且縮進(jìn)級(jí)別會(huì)使用棧的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)。在開始讀取文件之前,0(表示縮進(jìn)級(jí)別為0,無縮進(jìn))會(huì)被首先壓入棧中。然后從文件開頭到末尾,依次讀取每行邏輯代碼,每行邏輯代碼的縮進(jìn)級(jí)別都會(huì)和棧頂值進(jìn)行比較,如果相等,那么什么都不會(huì)發(fā)生;如果比棧頂值大的話,那么該行邏輯代碼的縮進(jìn)級(jí)別就會(huì)被壓入棧中,同時(shí)會(huì)生成一個(gè)縮進(jìn)標(biāo)記(INDENT TOKEN);如果比棧頂值小的話,那么棧中所有比該行邏輯代碼縮進(jìn)級(jí)別大的值都會(huì)從棧中移除,并且還會(huì)生成一個(gè)擴(kuò)展標(biāo)記(DEDENT TOKEN)。


下面是一個(gè)正確的縮進(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個(gè)字符,由于文件讀取之前0已經(jīng)被壓入棧中了,所以棧中的數(shù)據(jù)不會(huì)發(fā)生改變。#1縮進(jìn)4個(gè)字符,4被壓入棧中。#2縮進(jìn)18個(gè)字符,18被壓入棧中。#3縮進(jìn)4個(gè)字符,18被彈出棧,棧頂值又為4了。#4和#3縮進(jìn)一樣,所以不更新棧數(shù)據(jù)。#5縮進(jìn)13個(gè)字符,所以13被壓入棧中。#5、#6和#7的縮進(jìn)一樣,不更新棧數(shù)據(jù)。#8縮進(jìn)14個(gè)字符,14被壓入棧中。#9的縮進(jìn)4個(gè)字符,所以棧中的

13和14都會(huì)彈出,棧頂值又恢復(fù)為4。

下面是一個(gè)錯(cuò)誤的案例

    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處的錯(cuò)誤解釋的很清楚了。#5的縮進(jìn)級(jí)別在棧中找不到所以出錯(cuò),#5處的縮進(jìn)級(jí)別是14,比它的上面一行縮進(jìn)級(jí)別18,所以在

#5處應(yīng)該進(jìn)行出棧處理,但是在棧中找不到14這個(gè)級(jí)別,所以出錯(cuò)。

又比如:

if True:    print("hello girl")else:    print("hello boy") print("end")

最后一行代碼的縮進(jìn)級(jí)別是1,而且比上一行代碼的縮進(jìn)級(jí)別小,所以應(yīng)該出棧處理,但是在出站的時(shí)候找不到棧中以前有1的級(jí)別,所以報(bào)錯(cuò)。修改這個(gè)錯(cuò)誤,只需要將最后一行的空格去掉就可以。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享關(guān)于python中縮進(jìn)的簡介內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!

當(dāng)前名稱:關(guān)于python中縮進(jìn)的簡介-創(chuàng)新互聯(lián)
新聞來源:http://bm7419.com/article28/hsocp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、定制網(wǎng)站網(wǎng)站制作、網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司