簡體   English   中英

不同的縮進在python中沒有錯誤

[英]Different indentation no error in python

password = raw_input("Enter password: ")
if password == "1234":
  print "You logged in correctly!"
else:
    print "GTFO"

雖然我給出了不同的縮進代碼工作正常但我無法弄明白。

它不會被標記為IndentationError,正則任何語句塊必須至少有1個縮進空間

這里你的ifelse是兩個不同的塊,所以它總是縮進,所以解釋器不會拋出任何錯誤

if True:
 print 
elif True:
  print 
elif True:
   print 
elif True:
     print 
else:
         print

這將沒有任何問題

但是,如果我嘗試以下操作,我將得到IndendationError

if True:

    print ""
      print ""  # has different Indentation
    print ""

Python文檔解釋了縮進。 這是一個相關的摘錄:

在每個邏輯行的開頭,將行的縮進級別與堆棧的頂部進行比較。 如果它是平等的,沒有任何反應。 如果它更大,則將其推入堆棧,並生成一個INDENT令牌。 如果它更小,它必須是堆棧上出現的數字之一

在您的代碼中,由於縮進級別大於堆棧的頂部(為0 ),因此將其視為單個縮進。 else:行從堆棧頂部彈出2 ,因此解釋器沒有先前縮進級別為2內存。 它只知道它高於0

在塊中開始混合縮進時會出現問題:

def foo():
    if True:
        return True
      return False  # Is this part of the if statement or not?

當解析器到達return False ,堆棧包含[4, 8] 下一行的縮進為6 ,它不包含在堆棧中,因此會生成IndentationError

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM