Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同的缩进在python中没有错误_Python_Python 2.7 - Fatal编程技术网

不同的缩进在python中没有错误

不同的缩进在python中没有错误,python,python-2.7,Python,Python 2.7,虽然我给出了不同的缩进,但代码运行良好,我无法理解。它不会被标记为缩进错误,因为任何语句块都必须至少有1个缩进空间 这里您的if和else是两个不同的块,因此它被缩进了,因此解释器不会抛出错误 password = raw_input("Enter password: ") if password == "1234": print "You logged in correctly!" else: print "GTFO" 这将毫无问题地工作 但如果我尝试以下操作,我将得到Inden

虽然我给出了不同的缩进,但代码运行良好,我无法理解。

它不会被标记为缩进错误,因为任何语句块都必须至少有1个缩进空间

这里您的
if
else
是两个不同的块,因此它被缩进了,因此解释器不会抛出错误

password = raw_input("Enter password: ")
if password == "1234":
  print "You logged in correctly!"
else:
    print "GTFO"
这将毫无问题地工作

但如果我尝试以下操作,我将得到
IndendationError

if True:
 print 
elif True:
  print 
elif True:
   print 
elif True:
     print 
else:
         print
解释缩进。以下是相关摘录:

在每个逻辑行的开头,行的缩进级别为 与堆栈顶部相比。如果它相等,什么也不会发生。如果 它更大,它被推到堆栈上,一个缩进标记被删除 生成。如果它较小,则它必须是出现的数字之一 在堆栈上

在代码中,由于缩进级别大于堆栈顶部(即
0
),因此将其视为单个缩进。
else:
行从堆栈顶部弹出
2
,因此解释器没有您先前缩进级别
2
的内存。它只知道它高于
0

在块内开始混合缩进时会出现问题:

if True:

    print ""
      print ""  # has different Indentation
    print ""

当解析器到达
return False
时,堆栈包含
[4,8]
。下一行的缩进为
6
,它不包含在堆栈中,因此会生成
IndentationError

为什么?如果缩进不同,我们需要纠正错误!我想他的意思是他们处于不同的缩进水平。不仅仅是“space”(及其长度)与“tab”(制表符)的不同@drj:阅读文档:问题只在于一个块中的缩进程度不同。
def foo():
    if True:
        return True
      return False  # Is this part of the if statement or not?