我是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
答案 0 :(得分:5)
您的代码确实使用制表符空格不一致。将原始帖子复制到Sublime Text 3,然后选择所有行时,我可以看到标签(行)和空格(点):
请注意,我将标签设置为扩展为 8个空格,这也是Python的功能。请注意msgs[..]
行现在不再排队了。在Python 3中混合制表符和空格以进行缩进也是一种语法错误。
配置文本编辑器以在使用TAB键时插入空格。这是Python代码的推荐配置,因为选项卡宽度取决于编辑器配置,而空格总是相同的宽度。这是Python styleguide (PEP 8)建议的内容:
标签或空格?
切勿混合标签和空格。
缩进Python最流行的方法是仅使用空格。第二种最流行的方式是仅使用标签。使用制表符和空格混合缩进的代码应转换为仅使用空格。当使用-t选项调用Python命令行解释器时,它会发出有关非法混合制表符和空格的代码的警告。使用-tt时,这些警告会出错。强烈推荐这些选项!
对于新项目,强烈建议仅使用空格。大多数编辑都具有使这很容易做到的功能。