如何纠正python中的“意外缩进”错误?
如何纠正python中的“意外缩进”错误?
Answers:
Python在行的开头使用空格来确定代码块的开始和结束时间。您可以获得的错误是:
意外缩进。这行代码的开头比以前的空格多,但前面的不是子块的开头(例如if / while / for语句)。块中的所有代码行必须以完全相同的空格字符串开头。例如:
>>> def a():
... print "foo"
... print "bar"
IndentationError: unexpected indent
当以交互方式运行python时,这一点尤其常见:请确保不要在命令前放置任何多余的空格。(在复制粘贴示例代码时非常烦人!)
>>> print "hello"
IndentationError: unexpected indent
Unindent与任何外部缩进级别都不匹配。这行代码的开头空格比以前的空格少,但是同样,它与它可能包含的任何其他块也不匹配。Python无法决定其去向。例如,在下面,最终的打印是否应该包含在if子句中?
>>> if user == "Joey":
... print "Super secret powers enabled!"
... print "Revealing super secrets"
IndendationError: unindent does not match any outer indentation level
预期缩进的块。这行代码的开头与前面的空格数量相同,但是最后一行应开始一个块(例如,if / while / for语句,函数定义)。
>>> def foo():
... print "Bar"
IndentationError: expected an indented block
如果您想要一个不执行任何操作的函数,请使用“ no-op”命令传递:
>>> def foo():
... pass
允许混合使用制表符和空格(至少在我的Python版本中),但是Python假定制表符的长度为8个字符,可能与您的编辑器不匹配。只需对标签说“不”即可。大多数编辑器允许将它们自动替换为空格。
避免这些问题的最佳方法是在缩进子块时始终使用一致数量的空格,并且理想情况下使用可以为您解决问题的良好IDE。这也将使您的代码更具可读性。
在Python中,间距非常重要,这给出了代码块的结构。当您弄乱代码结构时会发生此错误,例如:
def test_function() :
if 5 > 3 :
print "hello"
您的文件中可能还会包含选项卡和空格。
我建议您使用python语法感知编辑器,例如PyScripter或Netbeans
如果您使用Sublime编写Python并出现缩进错误,
查看->缩进->将缩进转换为空格
我描述的问题是由Sublime文本编辑器引起的。同样的问题也可能由其他编辑器引起。从本质上讲,这个问题与Python希望以空格来处理缩进有关,而各种编辑器都以制表符来编写缩进。
将某些内容粘贴到Python解释器(终端/控制台)中时,也会发生此错误。
请注意,解释器会将空行解释为表达式的末尾,因此如果您粘贴类似
def my_function():
x = 3
y = 7
解释器将在解释之前将空行解释y = 7
为表达式的末尾,也就是说,您已经完成了对函数的定义,而下一行- y = 7
由于它是新表达式,因此缩进不正确。
如果缩进没问题,请查看您的编辑器是否具有“查看空白”选项。启用它应该可以找到空格和制表符混合的位置。
只需复制您的脚本,然后在整个代码“””下放入“”即可...
在变量中指定此行。
a = """ your python script """
print a.replace('here please press tab button it will insert some space"," here simply press space bar four times")
# here we replacing tab space by four char space as per pep 8 style guide..
现在在Sublime Editor中使用ctrl + b执行此代码,现在它将在控制台中打印缩进的代码。而已
您需要做的就是从以下代码的开头删除空格或制表符空格
from django.contrib import admin
# Register your models here.
from .models import Myapp
admin.site.register(Myapp)
运行以下命令以解决该问题:
autopep8 -i <filename>.py
这将更新您的代码并解决所有缩进错误:)
希望这能解决
与许多其他编程语言不同,Python中的缩进很重要,这并不是为了代码可读性。如果连续命令之间的代码中有空格或制表符,则python将给出此错误,因为Python对此很敏感。当我们将代码复制并粘贴到任何Python时,我们很可能会遇到此错误。 确保使用文本编辑器(如Notepad ++)标识并删除这些空格,或者从出现错误的代码行中手动删除空格。
Step1 :Gives error
L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
print(L[2: ])
Step2: L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]print(L[2: ])
Step3: No error after space was removed
L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
print(L[2: ])
OUTPUT: [[7, 8, 9, 10]]
谢谢!