欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析Python的縮進(jìn)規(guī)則的使用

 更新時(shí)間:2019年01月16日 14:31:18   作者:HDWK  
這篇文章主要介紹了解析Python的縮進(jìn)規(guī)則的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

每行代碼中開(kāi)頭的空格數(shù)(whitespace)用于計(jì)算該行代碼的縮進(jìn)級(jí)別(Indentation level),注意一個(gè)Tab等于8個(gè)空格(Space),縮進(jìn)級(jí)別為0表示無(wú)縮進(jìn)空格。

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

下面是一個(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ò)。

要修改的話,只需要將最后一行的空格去掉就可以。

參考文章:https://docs.python.org/2.0/ref/indentation.html

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決python將xml格式文件轉(zhuǎn)換成txt文件的問(wèn)題(xml.etree方法)

    解決python將xml格式文件轉(zhuǎn)換成txt文件的問(wèn)題(xml.etree方法)

    從數(shù)據(jù)分析的角度去看xml格式的數(shù)據(jù)集,具有簡(jiǎn)單性,結(jié)構(gòu)和內(nèi)容分離、可擴(kuò)展性的特征,今天通過(guò)本文給大家分享python將xml格式文件轉(zhuǎn)換成txt文件的問(wèn)題及解決方法(xml.etree方法),感興趣的朋友一起看看吧
    2021-09-09
  • python3實(shí)現(xiàn)二叉樹(shù)的遍歷與遞歸算法解析(小結(jié))

    python3實(shí)現(xiàn)二叉樹(shù)的遍歷與遞歸算法解析(小結(jié))

    這篇文章主要介紹了python3實(shí)現(xiàn)二叉樹(shù)的遍歷與遞歸算法解析(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python首次安裝后運(yùn)行報(bào)錯(cuò)(0xc000007b)的解決方法

    Python首次安裝后運(yùn)行報(bào)錯(cuò)(0xc000007b)的解決方法

    最近在安裝完P(guān)ython后運(yùn)行發(fā)現(xiàn)居然報(bào)錯(cuò)了,錯(cuò)誤代碼是0xc000007b,于是通過(guò)往上查找發(fā)現(xiàn)是因?yàn)槭状伟惭bPython缺乏VC++庫(kù)的原因,下面通過(guò)這篇文章看看如何解決這個(gè)問(wèn)題吧。
    2016-10-10
  • Python中zip()函數(shù)用法實(shí)例教程

    Python中zip()函數(shù)用法實(shí)例教程

    這篇文章主要介紹了Python中zip()函數(shù)用法實(shí)例教程,對(duì)Python初學(xué)者有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-07-07
  • Python+Tableau廣東省人口普查可視化的實(shí)現(xiàn)

    Python+Tableau廣東省人口普查可視化的實(shí)現(xiàn)

    本文將結(jié)合實(shí)例代碼,介紹Python+Tableau廣東省人口普查可視化,第七次人口普查數(shù)據(jù)分析,繪制歷次人口普查人口數(shù)量變化圖,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Python繪制驚艷的?;鶊D的示例詳解

    Python繪制驚艷的?;鶊D的示例詳解

    很多時(shí)候,我們需要一種必須可視化數(shù)據(jù)如何在實(shí)體之間流動(dòng)的情況。這個(gè)時(shí)候就需要桑基圖,它通常描繪 從一個(gè)實(shí)體(或節(jié)點(diǎn))到另一個(gè)實(shí)體(或節(jié)點(diǎn))的數(shù)據(jù)流。本文將利用Python繪制驚艷的桑基圖,需要的可以參考一下
    2022-02-02
  • python簡(jiǎn)單獲取數(shù)組元素個(gè)數(shù)的方法

    python簡(jiǎn)單獲取數(shù)組元素個(gè)數(shù)的方法

    這篇文章主要介紹了python簡(jiǎn)單獲取數(shù)組元素個(gè)數(shù)的方法,實(shí)例分析了Python中l(wèi)en方法的相關(guān)使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • python關(guān)于逆序輸出留空格的方法解讀

    python關(guān)于逆序輸出留空格的方法解讀

    這篇文章主要介紹了python關(guān)于逆序輸出留空格的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 解決Python一行輸出不顯示的問(wèn)題

    解決Python一行輸出不顯示的問(wèn)題

    今天小編就為大家分享一篇解決Python一行輸出不顯示的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 詳解Python GUI編程之PyQt5入門(mén)到實(shí)戰(zhàn)

    詳解Python GUI編程之PyQt5入門(mén)到實(shí)戰(zhàn)

    這篇文章主要介紹了詳解Python GUI編程之PyQt5入門(mén)到實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論