[英]Different indentation no error in python
password = raw_input("Enter password: ")
if password == "1234":
print "You logged in correctly!"
else:
print "GTFO"
雖然我給出了不同的縮進代碼工作正常但我無法弄明白。
它不會被標記為IndentationError,正則任何語句塊必須至少有1個縮進空間
這里你的if
和else
是兩個不同的塊,所以它總是縮進,所以解釋器不會拋出任何錯誤
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.