Python:缩进错误,方法顺序不同

时间:2016-05-07 12:54:03

标签: python

我收到此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.")

1 个答案:

答案 0 :(得分:1)

当我查看你的问题中输入的代码时,你的缩进中会混合使用空格和制表符。

复制代码并添加额外缩进以显示代码可能已经改变了这些内容,但您肯定需要在原始代码中仔细检查。 Python教程(IIRC)与其他文档一起强烈建议仅使用空格。尝试用空格替换所有标签。

ADDED:我现在看到我正在回忆PEP 8而不是Python教程。 PEP 8说

  

空格是首选的缩进方法。

     

选项卡应仅用于与代码保持一致   已经缩进了标签。

     

Python 3不允许混合使用制表符和空格来缩进。

     

使用标签和空格的混合缩进的Python 2代码应该是   转换为专门使用空格。

     

使用-t
当调用Python 2命令行解释器时   选项,它会发出有关非法混合标签和代码的警告   空间。使用-tt时,这些警告会出错。这些选项   强烈推荐!