python3不合理地返回TabError:缩进中使用制表符和空格不一致

Eva*_*Lee 0 python smtp indentation

我是python的新手.我发现我的python代码返回不合理地返回选项卡错误:

msgs ['to'] ="xxx@gmail.com"
^ TabError:缩进中标签和空格的使用不一致

这是我的代码的一部分:

def send_email(self):
    try:
        msgs = MIMEMultipart()
        msgs['to'] = "xxx"
        msgs['from'] = "xxx"
        msgs['subject'] = "abc"
        msgs.attach(MIMEText(file("~/att1.py").read())
        msgs.attach(MIMEText(file("~/att2.docx").read())

        server = smtplib.SMTP()
        server.connect('smtp.gmail.com:587')
        server.login('xxx','xxx')
        server.sendmail(msgs['from'], msgs['to'],msgs.as_string())
        server.quit()
        print "Successfully sent email"
        return True
    except SMTPException:
        print "Error: unable to send email"
        print str(SMTPException)
        return False
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 8

您的代码确实使用制表符空格不一致.将原始帖子复制到Sublime Text 3,然后选择所有行时,我可以看到两个制表符(行)和空格(点):

在此输入图像描述

请注意,我将标签设置为扩展到8个空格,这也是Python所做的.请注意msgs[..]线条现在不再排队了.在Python 3中混合制表符和空格以缩进也是一种语法错误.

将文本编辑器配置为在使用TAB键时插入空格.这是Python代码的推荐配置,因为选项卡宽度取决于编辑器配置,而空格总是相同的宽度.这就是Python样式指南(PEP 8)推荐的内容:

标签或空格?

切勿混合标签和空格.

缩进Python最流行的方法是仅使用空格.第二种最流行的方式是仅使用标签.使用制表符和空格混合缩进的代码应转换为仅使用空格.当使用-t选项调用Python命令行解释器时,它会发出有关非法混合制表符和空格的代码的警告.使用-tt时,这些警告会出错.强烈推荐这些选项!

对于新项目,强烈建议仅使用空格.大多数编辑都具有使这很容易做到的功能.