从Sublime Text迁移Python代码至VS Code时缩进错误问题排查
这种情况我可太熟了——看着缩进整整齐齐,Python却偏说缩进错误,哪怕重新敲缩进也没用,多半是这几个“隐形坑”在搞鬼:
制表符与空格混合使用:Python对缩进的一致性要求极高,哪怕你看着对齐了,如果一行用了Tab缩进,另一行用了空格,它直接报错。Sublime和VS Code可能默认的缩进渲染宽度一样(比如都把Tab显示成4个空格宽),所以视觉上看不出区别,但实际字符完全不同。解决起来很简单:在VS Code里按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),输入Convert Indentation to Spaces(或to Tabs),把整个文件的缩进统一成一种格式就行。缩进宽度不匹配:比如你在Sublime里设置的是4空格缩进,但VS Code默认改成了2空格。这时候你手动敲缩进时,每一层只敲了2个空格,和原代码里的4空格缩进层级对不上,Python自然认不出来。检查一下VS Code右下角的缩进数字(比如显示“2”或“4”),点击它就能切换成和原代码一致的宽度。
暗藏隐形控制字符:复制粘贴过程中偶尔会带入非打印的特殊字符,比如全角空格、NBSP(非断行空格),这些字符看起来和普通空格一模一样,但Python不把它们当作缩进的一部分。你可以打开VS Code的控制字符显示功能:按
Ctrl+,打开设置,搜索Editor: Render Control Characters并勾选,就能看到这些隐形字符,删掉替换成普通空格就好。罕见的编码问题:极少数情况下,文件编码不兼容会导致空格字符被解析异常。你可以试试把文件编码改成UTF-8:点击VS Code右下角的编码标识(比如“GBK”),选择“通过编码保存”,然后选“UTF-8”。
内容的提问来源于stack exchange,提问作者Cornel Verster

