当前位置: 首页 > 面试题库 >

Python对制表符和空格进行缩进的解释

傅俊德
2023-03-14
问题内容

我决定学习一点Python。第一部分介绍说它使用缩进来对语句进行分组。虽然最好的习惯显然是仅使用其中一种,但是如果我互换它们会发生什么呢?多少个空格将被视为等于一个制表符?如果将制表符和空格混合使用,还是根本无法工作?


问题答案:

空格不等同于制表符。用制表符缩进的行与用1、2、4 或8个 空格缩进的行的缩进不同。

通过反例证明( 错误或至多限制-tab!= 4个空格 ):

x = 1
if x == 1:
^Iprint "fff\n"
    print "yyy\n"

^I‘显示一个TAB。通过Python 2.5运行时,出现错误:

  File "xx.py", line 4
    print "yyy\n"
                ^
IndentationError: unindent does not match any outer indentation level

因此表明,在Python 2.5中,制表符不等于空格(尤其是不等于4个空格)。

糟糕-令人尴尬;我的反例证明表明制表符不等于4个空格。正如AlexMartelli在注释中指出的那样,在Python
2中,制表符等效于8个空格,并且使用制表符和8个空格对示例进行调整表明确实如此。

x = 1
if x != 1:
^Iprint "x is not 1\n"
        print "y is unset\n"

在Python 2中,此代码有效,什么也不打印。

在Python 3,规则是稍有不同(如注意到由安蒂哈帕拉。比较:

  • 缩进的Python 2
  • 缩进的Python 3

Python 2说:

首先,将制表符替换(从左至右)一到八个空格,以使直到包括该替换在内的字符总数为八个的倍数(这与Unix所使用的规则相同)。然后,第一个非空白字符之前的空格总数将确定该行的缩进。缩进不能使用反斜线分割成多条物理线;直到第一个反斜杠的空格都会确定缩进。

Python 3说:

制表符被替换为(从左到右)一到八个空格,以使直到包括该替换在内的字符总数为八个的倍数(这与Unix所使用的规则相同)。然后,第一个非空白字符之前的空格总数将确定该行的缩进。缩进不能使用反斜线分割成多条物理线;直到第一个反斜杠的空格都会确定缩进。

(除了开头词“ First”之外,这些都是相同的。)

Python 3增加了一段:

如果源文件以使得含义取决于制表符在空格中的值的方式混合制表符和空格,则缩进被视为不一致。在这种情况下,将引发TabError。

这意味着TAB在Python 2中工作的vs 8空格示例将在Python 3中生成TabError。最好-在Python 3中是必要的-
确保组成块中每行缩进的字符序列相同。
PEP8说“在每个缩进级别使用4个空格”。(Google的编码标准说“使用2个空格”。)



 类似资料:
  • 问题内容: 我试图在Python 3.2中创建应用程序,并且一直使用制表符进行缩进,但是即使编辑器也将其中的一些更改为空格,然后在尝试运行时打印出“不一致使用制表符和空格”该程序。 如何将空格更改为制表符?这让我疯狂。(我是编程的初学者)。如果我能在代码中获得一些总体提示,我会很高兴,如果我犯了很多错误,我会很高兴听到。 问题答案: 不要使用标签。 将你的编辑器设置为使用4个空格进行缩进。 搜索并

  • 选项卡和空格混合用于相同的项目。 我需要代码缩进,但不要用空格替换制表符,反之亦然。我只需要缩进代码(带空格或制表符的新缩进并不重要)。 使用Eclipse IDE,但欢迎插件或其他工具。 另外,我知道在同一个项目中,使用相同的空白策略(制表符或白色)更好。 例如\t-- 之前 之后

  • 问题内容: 在某处是否有标准的Google Go编码约定文档来设置制表符或空格在Go源代码中缩进是首选?如果不是,那么(统计上)更流行的选择是什么? 官方的建议是什么?(如果有) 最受欢迎的选择是什么? 问题答案: 官方建议使用以下格式格式化代码 或直接使用gofmt命令 您可以在golang.org博客上或“ 有效” go 文档中了解有关此内容的更多信息: 缩进 我们使用缩进标签,默认情况下go

  • 问题内容: 我是Python的新手。上面粘贴的程序特别在“ if temp == dna2:”行给我一个错误“缩进中的制表符和空格的不一致使用”。有人可以帮我找出缩进不正确的地方吗? 问题答案: 这意味着您在缩进中混合了空格和制表符。您必须解决此问题,使其与制表符或空格保持一致。

  • 问题内容: 在编码python时,我仅使用2个空格进行缩进,请确保PEP-8确实建议使用4个空格,但从历史上看,这是不寻常的。 那么,谁能说服我使用4个空格而不是2个空格?有什么优缺点? PS最后,将所有现有代码库从2个空间转换为4个空间的简单方法是什么? PPS PEP-8也强烈建议不要使用制表符进行缩进。在这里阅读 因此,总结一下: 优点: 包裹长度超过80行的字符串时,要安排更多空间。 可以

  • Java15引入了(非预览)文本块功能。它允许在不破坏代码缩进的情况下定义多行字符串文字,方法是从行中去掉公共空白前缀。JEP 378中描述了该算法。 但是,在使用制表符和空格组合缩进行的情况下,“公共空白前缀”是如何定义的呢? 例如,在下列情况下(表示空格,