![]() |
1
2
您很可能会在缩进中混合制表符和空格。对于Python 2,这通常会导致奇怪的行为,因为混合制表符和空格实际上是有效的。但它并没有像你所期望的那样工作:对于Python 2,标签相当于 8个空间 因此,为了评估缩进级别,每个制表符被8个空格替换。
因此,当您有这样的缩进时(其中
那么它可能看起来很奇怪,但它是有效的,因为所有内容都使用8个空格缩进。 所以你应该确保 一致的 缩进(只要其一致,空格或制表符都无所谓)。
顺便说一句:在Python 3中,这不再被允许,并将引发语法错误(实际上是
|
![]() |
2
2
您的代码混合了制表符和空格进行缩进。虽然这在Python 2中是可能的并且是允许的,但Python2假定选项卡大小为 8个空间 。如果您有一个编辑器设置为打开可见的空白,您会看到其中一行缩进了8个空格,另外2行缩进一个空格 桌棋类游戏 :
也就是说,在编辑器中,选项卡显示默认为4个空格,而Python 2期望8个空格与 桌棋类游戏 . 由于制表符大小无法达成一致,但在Python中缩进很重要,因此使用制表符进行缩进是 not considered best practice 在Python2或Python3中。
混合制表符和空格使得缩进依赖于用空格表示的制表符的值,这是非常错误的。 在Python 2中,制表符大小为8,因此缩进 桌棋类游戏 等于8个空格或单个空格 桌棋类游戏 不幸的是,有许多代码编辑器没有意识到这一点,而是为Python 2代码使用不同的选项卡大小。在Python 3 OTOH中 桌棋类游戏 仅与另一个匹配 桌棋类游戏 一个好的Python 3编辑器会将缩进中不一致的制表符使用标记为语法错误。
因此,使用选项卡的唯一一致方式是使用
只有
用于缩进的选项卡。在Python 2中有一个开关;您可以使用选项启动Python解释器
但是,如果您正在编写新代码,请注意Python社区 几乎均匀地 遵循PEP8编码约定:缩进为4个空格 未使用选项卡 。根据我的经验,只有一个非常奇怪的遗留项目不遵守这一准则。现在几乎所有有编码约定的开源项目都需要4位缩进,以及 PEP 8 . |
|
David Lee · 删除嵌套列表后的缩进 7 年前 |
![]() |
p7adams · 将代码从括号编辑器推送到Github后出现缩进问题 7 年前 |
![]() |
Karen · 降价缩进(github) 7 年前 |
![]() |
Byron Hawkins · vim缩进:禁用枚举列表的推断 7 年前 |
![]() |
Alineat · Python上的缩进问题[重复] 7 年前 |
![]() |
user3729611 · emacs目录变量,不包括特定子目录 7 年前 |
![]() |
kAldown · 新安装后,vim expandtab无法工作 9 年前 |