Python IDLE中允许缩进不正确吗?

克里斯汀·迪恩(Christian Dean)

看第二次世界大战给出的答案时,我评论了他的缩进,说那是错误的。但是,在我的IDLE中运行他的代码后,我发现该代码运行顺利。

我尝试了一些示例,只是为了确保得到正确的结果:

>>> def foo():
    return 0

>>> foo()
0
>>> def bar():
    return foo() + 5

>>> bar()
5
>>> def foobar():
    return foo() + bar()

>>> foobar()
5
>>> 

如您所见,它们全部运行良好。如果我在常规脚本中尝试相同的操作,Python甚至会在程序运行之前引发错误,告诉我我忘了缩进一个代码块:

在此处输入图片说明

为什么在交互式IDLE中允许这种缩进,但在常规脚本中不允许这种缩进呢?我查看了IDLE的文档,尤其是第25.5.2.1节“自动缩进”,该文档对找到答案没有帮助。

此外,关于函数的Python文档指出必须缩进函数体:

关键字def引入函数定义。它后面必须是函数名称和形式参数的括号列表。构成函数主体的语句从下一行开始,并且必须缩进

(强调我的)

为什么在IDLE中允许这种缩进,但是在常规脚本中完全将其关闭?这是故意的吗?如果是这样,此行为是否记录在某处?

迈克尔·吉尔

>>>您在IDLE看到的只是一个提示。碰巧的是,此提示恰好是四个字符长,并且您恰巧也在代码上缩进了四个空格。

要查看和思考代码的实际工作方式,让我们删除所有>>>提示。为了清楚起见,我们也将删除打印结果。

现在看起来完全是正常的Python代码:

def foo():
    return 0

foo()

def bar():
    return foo() + 5

bar()

def foobar():
    return foo() + bar()

foobar()

因此,IDLE与任何其他Python解释器都没有什么不同,它只是将>>>提示放在第一行的方式,仅使它令人困惑。如果考虑删除这四个字符后的代码外观,这将更有意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章