有点新手python,来自C / C ++开发经验。不要咆哮,但缩进和间距的东西有点成为我生命的祸根。所以这就是问题所在。获取此代码段,按顺序键入,永不删除或在现有代码之间插入任何编辑。
while condition:
line 1
line 2
line3 #outside the loop
工作正常。但是,假设我想在循环中添加另一条指令。 (在Linux上使用jupyter notebook和sublime进行编辑)所以我将该行添加为
while condition:
line 1
line 1.5
line 2
line3 #outside the loop
那是问题开始的时候。无论我尝试什么,我都无法让它发挥作用。它给了我像
这样的错误第2行 ^ IndentationError:意外缩进
或根据具体情况而有所不同。它似乎以某种方式在一个庞大而复杂的嵌套块结构中添加一条线,以某种方式完全混淆了整个事物。
我没有手动插入空格/缩进,我只是让我的编辑器来处理。当我按Enter键时,光标向下移动到下一行,缩进与前一行相同的级别(除非上一行以:结尾,在这种情况下它会添加另一个缩进)。 / p>
当我需要结束 while 循环或 if 阻止时,我只是按下退格键来缩回一个缩进级别。通过眼睛检查,块看起来完全没问题,但不知道解释器如何看待它。
任何帮助,我做错了什么,或者至少有什么好的做法可以避免这个问题?特别是,在现有嵌套块中添加甚至一行似乎几乎不可能。
答案 0 :(得分:2)
您可以混合使用空格和制表符缩进。您可以使用制表符或空格,但不能同时使用两者。但是,建议使用space作为PEP8 Python样式指南
如果您使用的是Visual Studio Code,则可以安装pylint
扩展名以轻松检测此类错误。像这样:
答案 1 :(得分:1)
Sublime文本编辑器默认使用标签进行缩进。如果您最初使用空格进行缩进并稍后进行编辑,则会混合使用空格和制表符进行缩进,这是导致缩进错误的原因。这是因为Python 3不允许混合使用制表符和空格来缩进。
PEP8 Python Style Guide建议每个缩进级别使用4个空格。返回并用空格替换选项卡,代码将正常工作。
(PS:改变Sublime的默认缩进设置很容易)