当你在一行的末尾忘记冒号时,在if语句下缩进时不小心添加了一个空格,或者忘记括号,你会遇到语法错误。这意味着Python无法弄清楚如何阅读您的程序。这类似于忘记英文标点符号:例如,这个文字难以阅读没有标点符号也没有大写字母为什么这很难,因为你必须找出每个句子结束的地方你还要弄清楚每个句子的位置在某种程度上,如果应该有一个句子中断,它可能是模棱两可的。

人们通常可以在没有标点符号的情况下弄清楚文本的含义,但人们比计算机更聪明。如果Python不知道如何阅读程序,它将放弃并通知您一个错误。例如:

def some_function()
msg = "hello, world!"
print(msg)
return msg
File "", line 1
def some_function()
^
SyntaxError: invalid syntax

在这里,Python告诉我们有一个SyntaxError在线1,甚至在有问题的地方放一个小箭头。在这种情况下,问题是函数定义在结尾处缺少冒号。

实际上,上面的函数有两个语法问题。如果我们修复的结肠的问题,我们看到,有同样的IndentationError,这意味着在函数定义行并不都具有相同的缩进:

def some_function():
msg = "hello, world!"
print(msg)
return msg
File "", line 4
return msg
^
IndentationError: unexpected indent

双方SyntaxError并IndentationError表示与程序的语法问题,而是一个IndentationError更为具体:它总是意味着有你的代码是如何缩进的问题。