password = raw_input("Enter password: ")
if password == "1234":
print "You logged in correctly!"
else:
print "GTFO"
虽然我给不同的缩进代码工作正常,我无法弄清楚。不同的缩进python没有错误
password = raw_input("Enter password: ")
if password == "1234":
print "You logged in correctly!"
else:
print "GTFO"
虽然我给不同的缩进代码工作正常,我无法弄清楚。不同的缩进python没有错误
它不会被标记为作为IndentationError,正弦波声明的任何块都必须在租赁的缩进
这里您if
和else
是两个不同的区块1层的空间,所以这样的解释抛出它无论如何缩进没有错误
if True:
print
elif True:
print
elif True:
print
elif True:
print
else:
print
这将没有任何问题的工作
但如果我尝试下面我会得到IndendationError
if True:
print ""
print "" # has different Indentation
print ""
The Python documentation解释缩进。这里有一个相关的摘录:
在每个逻辑行的开头,行的缩进级别 相比堆栈的顶部。如果相等,则没有任何反应。如果 更大,则将其压入堆栈,并生成一个INDENT令牌 。如果是较小的,它必须是堆栈
在代码上发生 的号码中的一个,由于缩进电平比栈(其是0
)的顶部时,它被处理作为一个缩进。 else:
行从栈顶弹出2
,因此解释器没有记忆您以前的缩进级别2
。它只知道它高于0
。
def foo():
if True:
return True
return False # Is this part of the if statement or not?
当解析器达到return False
,堆栈包含[4, 8]
:当您启动区块内的混合缩进出现
问题。下一行有一个缩进6
,它不包含在堆栈中,因此会生成一个IndentationError
。
+1。 –
为什么如此?如果不同的缩进我们需要得到错误! – drj
我认为他意味着他们处于不同级别的缩进。不像“空间”(&其长度)与“选项卡”不同 –
@drj:阅读文档:http://docs.python.org/3/reference/lexical_analysis.html#indentation – Blender