password = raw_input("Enter password: ")
if password == "1234":
print "You logged in correctly!"
else:
print "GTFO"
雖然我給不同的縮進代碼工作正常,我無法弄清楚。不同的縮進python沒有錯誤
password = raw_input("Enter password: ")
if password == "1234":
print "You logged in correctly!"
else:
print "GTFO"
雖然我給不同的縮進代碼工作正常,我無法弄清楚。不同的縮進python沒有錯誤
它不會被標記爲作爲IndentationError,正弦波聲明的任何塊都必須在租賃的縮進
這裏您if
和else
是兩個不同的區塊1層的空間,所以這樣的解釋拋出它無論如何縮進沒有錯誤
if True:
print
elif True:
print
elif True:
print
elif True:
print
else:
print
這將沒有任何問題的工作
但如果我嘗試下面我會得到IndendationError
if True:
print ""
print "" # has different Indentation
print ""
The Python documentation解釋縮進。這裏有一個相關的摘錄:
在每個邏輯行的開頭,行的縮進級別 相比堆棧的頂部。如果相等,則沒有任何反應。如果 更大,則將其壓入堆棧,並生成一個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
。
+1。 –
爲什麼如此?如果不同的縮進我們需要得到錯誤! – drj
我認爲他意味着他們處於不同級別的縮進。不像「空間」(&其長度)與「選項卡」不同 –
@drj:閱讀文檔:http://docs.python.org/3/reference/lexical_analysis.html#indentation – Blender