当looking at an answer given by wwii时,我评论他的缩进说这是错误的。然而,在我空闲时运行他的代码之后,我发现它运行得很顺利。在
我试了几个例子,只是为了确保得到正确的结果:>>> def foo():
return 0
>>> foo()
0
>>> def bar():
return foo() + 5
>>> bar()
5
>>> def foobar():
return foo() + bar()
>>> foobar()
5
>>>
如你所见,他们都跑得很好。如果我在正则脚本中尝试同样的方法,Python甚至会在程序运行之前引发一个错误,告诉我忘记缩进块:
为什么这种缩进在交互式空闲中是允许的,而在常规脚本中却不允许?我查看了空闲的文档,更具体地说是25.5.2.1 Automatic indentation部分,这对找到答案毫无帮助。在The keyword def introduces a function definition. It must be followed by the function name and the parenthesized list of formal parameters. The statements that form the body of the function start at the next line, and must be indented.
(强调我的)
为什么在空闲时允许这种缩进,但在常规脚本中却完全关闭?这是故意的吗?如果是这样的话,这种行为有没有记录在案?在