我知道python是一种解释器语言,它意味着它在运行时解释代码,那么为什么代码会给我IndentationError?
def function(x):
if x:
在运行之前检查所有代码吗?
答案 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