Python - 语法错误和缩进错误[重复]

问题描述 投票:0回答:5

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

def function(x):
    if x:

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

python interpreter python-2.6
5个回答
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

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


1
投票

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


1
投票

我没有收到任何缩进错误

 def function(x):
   if x:
       print x

我是Python新手,你能解释一下你是如何得到这个错误的吗??? 当我尝试时,ipython 不允许我在不输入任何语句的情况下结束行。所以我在代码中添加了“print x”。


0
投票

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


0
投票

“if x:”语句后面需要有一些内容。为了避免错误,您至少需要执行以下操作。

    def function(x):
        if x:
            pass
© www.soinside.com 2019 - 2024. All rights reserved.