Python - SyntaxError和IndentationError

时间:2015-03-23 20:44:37

标签: python interpreter python-2.6

我知道python是一种解释器语言,它意味着它在运行时解释代码,那么为什么代码会给我IndentationError?

def function(x):
    if x:

在运行之前检查所有代码吗?

5 个答案:

答案 0 :(得分:1)

当Python加载模块时,源代码通过Python解释器运行并“编译”为内部数据结构。因此,在加载时会遇到违反Python语法规则的错误。

答案 1 :(得分:1)

在Python中,函数是对象。

您立即收到错误,因为Python解释器由于语法不正确而无法从函数定义构造函数对象。在这种情况下,在if语句之后没有缩进块。

https://docs.python.org/2/tutorial/controlflow.html#defining-functions

在调用函数之前创建函数实例。

>>> def errorOnCall(x):
...     return x / 0
... 
>>> print errorOnCall
<function errorOnCall at 0x7f249aaef578>

由于没有语法错误而创建的函数对象,但该函数在调用时会引发错误。

>>> errorOnCall(42)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in errorOnCall
ZeroDivisionError: integer division or modulo by zero

现在我们调用此函数时会抛出一个错误。

>>> def errorOnDefinition(x):
...     if x:
... 
  File "<stdin>", line 3

    ^
IndentationError: expected an indented block

当我们完成定义函数但在调用它之前抛出此错误。解释器无法从此无效定义创建函数实例。

答案 2 :(得分:1)

我没有收到任何缩进错误

 def function(x):
   if x:
       print x

我是python的新手你能解释一下你是怎么得到这个错误的吗? 因为我试过ipython不允许我在没有输入任何语句的情况下结束行。所以我在你的代码中添加了“print x”。

答案 3 :(得分:0)

因为缩进是Python语法的一个元素,所以在语法分析期间检查它。

答案 4 :(得分:0)

您需要在“if x:”语句后面添加一些内容。以下是您避免错误所需的最少时间。

    def function(x):
        if x:
            pass