我知道 python 是一种解释器语言,这意味着它在运行时解释代码,那么为什么该代码会给我 IndentationError 呢?
def function(x):
if x:
它在运行之前会检查所有代码吗?
在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
当我们完成定义函数时但在调用它之前,会抛出此错误。解释器无法从这个无效定义创建函数实例。
当Python加载模块时,源代码通过Python解释器运行并“编译”成内部数据结构。因此,违反 Python 语法规则的错误会在加载时被捕获。
我没有收到任何缩进错误
def function(x):
if x:
print x
我是Python新手,你能解释一下你是如何得到这个错误的吗??? 当我尝试时,ipython 不允许我在不输入任何语句的情况下结束行。所以我在代码中添加了“print x”。
因为缩进是Python语法的一个元素,所以在语法分析时会检查它。
“if x:”语句后面需要有一些内容。为了避免错误,您至少需要执行以下操作。
def function(x):
if x:
pass