慕工程0101907
Python在行的開頭使用間距來確定代碼塊何時開始和結束。你可以得到的錯誤是:意外的縮進。這行代碼在開始時比前一行有更多空格,但前一行不是子塊的開頭(例如if / while / for語句)。塊中的所有代碼行必須以完全相同的空格字符串開頭。例如:>>>?def?a():...???print?"foo"...?????print?"bar"IndentationError:?unexpected?indent這個在交互式運行python時尤為常見:確保在命令之前不要添加任何額外的空格。(復制和粘貼示例代碼時非常煩人!)>>>???print?"hello"IndentationError:?unexpected?indentUnindent與任何外部縮進級別都不匹配。這行代碼在開始時的空間比之前的空間少,但同樣地,它與它可能屬于的任何其他塊不匹配。Python無法決定它的去向。例如,在下面,最終的打印是否應該是if子句的一部分?>>>?if?user?==?"Joey":...?????print?"Super?secret?powers?enabled!"...???print?"Revealing?super?secrets"IndendationError:?unindent?does?not?match?any?outer?indentation?level期望一個縮進的塊。這行代碼在開始時具有與前一行相同的空格數,但最后一行預計會啟動一個塊(例如if / while / for語句,函數定義)。>>>?def?foo():...?print?"Bar"IndentationError:?expected?an?indented?block如果您想要一個不執行任何操作的函數,請使用“no-op”命令傳遞:>>>?def?foo():...?????pass允許混合制表符和空格(至少在我的Python版本中),但Python假定制表符長8個字符,可能與您的編輯器不匹配。只是對標簽說“不”。大多數編輯器允許它們被空格自動替換。避免這些問題的最佳方法是在縮進子塊時始終使用一致數量的空格,理想情況下使用可以解決問題的好IDE。這也將使您的代碼更具可讀性。