我收到此python缩进错误,我不明白
我有两个版本的代码,实际上完全相同但顺序不同。一个有效但另一个没有。我不知道为什么。
这是不起作用的版本:
错误讯息:“文件”/Users/HonghuiChoi/Desktop/helloworld/main.py“, 第28行 def get(self): ^ IndentationError:unindent与任何外部缩进级别“
不匹配
class MainPage(webapp2.RequestHandler):
def write_form(self, error=""):
self.response.write(form % {"error":error})
def get(self): #THIS IS THE LINE THAT COMPLAINS
self.write_form()
def post(self):
user_month = valid_month(self.request.get('month'))
user_day = valid_day(self.request.get('day'))
user_year = valid_year(self.request.get('year'))
if not (user_month and user_day and user_year):
self.write_form("invalid date!")
else:
self.response.write("valid day.")
这是有效的版本:
class MainPage(webapp2.RequestHandler):
def get(self):
self.write_form()
def write_form(self, error=""):
self.response.write(form % {"error":error})
def post(self):
user_month = valid_month(self.request.get('month'))
user_day = valid_day(self.request.get('day'))
user_year = valid_year(self.request.get('year'))
if not (user_month and user_day and user_year):
self.write_form("invalid date!")
else:
self.response.write("valid day.")
答案 0 :(得分:1)
当我查看你的问题中输入的代码时,你的缩进中会混合使用空格和制表符。
复制代码并添加额外缩进以显示代码可能已经改变了这些内容,但您肯定需要在原始代码中仔细检查。 Python教程(IIRC)与其他文档一起强烈建议仅使用空格。尝试用空格替换所有标签。
ADDED:我现在看到我正在回忆PEP 8而不是Python教程。 PEP 8说
空格是首选的缩进方法。
选项卡应仅用于与代码保持一致 已经缩进了标签。
Python 3不允许混合使用制表符和空格来缩进。
使用标签和空格的混合缩进的Python 2代码应该是 转换为专门使用空格。
使用-t
当调用Python 2命令行解释器时 选项,它会发出有关非法混合标签和代码的警告 空间。使用-tt时,这些警告会出错。这些选项 强烈推荐!