10.Python的设置代码格式与避免缩进错误完全指南
Python 的设置代码格式与避免缩进错误完全指南文章目录Python 的设置代码格式与避免缩进错误完全指南第一部分为什么 Python 特别重视格式一、缩进是语法的一部分二、格式混乱会导致的问题第二部分缩进规则必须遵守三、同一代码块必须缩进一致四、冒号后面的下一行必须缩进五、不该缩进时不要多缩进六、多层嵌套时逐级多缩进一层七、空格 vs Tab只选一种不要混用第三部分常见格式规范PEP 8八、PEP 8 是什么九、缩进4 个空格十、行长度与换行十一、空格运算符两边、逗号后十二、空行函数之间、逻辑块之间第四部分如何设置编辑器统一格式、避免缩进错十三、核心设置Tab 4 个空格、用空格代替 Tab十四、保存时自动格式化可选第五部分避免缩进错误——常见错误与改正十五、错误 1冒号后没有缩进十六、错误 2同一块内缩进不一致十七、错误 3多缩进不该缩进的缩进了十八、错误 4少缩进该在块里的没缩进十九、错误 5Tab 和空格混用第六部分正确与错误示例对比二十、if / for / def 示例二十一、多层嵌套示例第七部分小结与自检清单二十二、缩进自检清单二十三、小结表https://www.quanzhankaige.com/python10/本文档面向零基础新手详细讲解为什么要重视代码格式、缩进规则、常见格式规范、如何设置编辑器以及如何避免缩进错误并配有大量正确与错误示例。第一部分为什么 Python 特别重视格式一、缩进是语法的一部分在很多语言里缩进只是为了“好看”。在Python 里缩进是语法用缩进来表示代码块哪些代码属于同一个 if、for、函数等。缩进错了要么报错要么逻辑完全错。示例缩进决定“谁属于谁”# 正确print 属于 if只有条件成立才执行ifTrue:print(会执行)# 错误print 没有缩进不属于 if会报错# if True:# print(会执行) # IndentationError所以格式不是可选项而是写对代码的前提。二、格式混乱会导致的问题IndentationError缩进不一致、该缩进没缩进直接报错无法运行逻辑错误该在循环里的代码缩到外面或该在 if 里的缩错了程序行为完全不对难读难改别人和自己以后都看不懂下面逐项说明如何设置格式、避免缩进错误。第二部分缩进规则必须遵守三、同一代码块必须缩进一致代码块例如if、for、def后面的冒号:下面的若干行构成一个块。这些行必须缩进相同且比if/for/def多一级。一级缩进通常用4 个空格推荐或 1 个 Tab。整份文件里只能选一种要么全用空格要么全用 Tab不能混用。正确示例if12:print(成立)# 这行缩进 4 格print(还是成立)# 这行也缩进 4 格错误示例缩进不一致# 错误第一行 4 格第二行 2 格会报 IndentationError# if 1 2:# print(成立)# print(错了) # 缩进和上一行不一致四、冒号后面的下一行必须缩进遇到:if、elif、else、for、while、def、class、try、except 等下一行必须比这一行多缩进否则报错。正确foriinrange(3):print(i)错误# for i in range(3):# print(i) # 没有缩进IndentationError五、不该缩进时不要多缩进和“该缩进必须缩进”相反不属于某个块的代码不要多缩进否则会被误认为属于上面的 if/for导致逻辑错误。错误示例不该缩进的缩进了x10y20# 错误y 20 不属于任何块不能缩进正确x10y20六、多层嵌套时逐级多缩进一层if 里再写 if、for 里再写 if每多一层就再多缩进一级通常一级 4 个空格。示例foriinrange(2):print(外层,i)ifi1:print(内层)# 比 if 多一级比 for 多两级七、空格 vs Tab只选一种不要混用推荐整份文件用4 个空格表示一级缩进Python 官方和 PEP 8 推荐。可以整份文件都用Tab但和多数教程、示例不一致。禁止同一文件里有的行用空格、有的用 Tab容易出IndentationError且看不出差别。建议在编辑器里设置“按 Tab 键时插入 4 个空格”这样键盘只按一次实际存的是空格既统一又符合规范。第三部分常见格式规范PEP 8八、PEP 8 是什么PEP 8是 Python 官方的代码风格指南“怎么写更统一、更易读”。不是语法强制但建议遵守尤其是缩进用4 个空格每行不要太长一般不超过 88 或 120 字符可配置运算符两边、逗号后面加空格等下面只写最常用、新手最容易踩坑的几条。九、缩进4 个空格一级缩进 4 个空格。不要用 2 个、6 个、8 个混用。# 推荐deffoo():ifTrue:print(ok)十、行长度与换行一行太长例如超过 88 字符可读性差。可以把长表达式拆成多行或在合适的地方换行下一行多缩进一级或与括号内首行对齐简单示例# 长列表可拆行nums[1,2,3,4,5,6,]十一、空格运算符两边、逗号后运算符两边加一个空格a b、x 1逗号后面加一个空格(1, 2)、print(a, b)逗号前可加可不加一致即可# 推荐x12lst[1,2,3]十二、空行函数之间、逻辑块之间顶层函数、类定义之间空2 行类内方法之间空1 行同一函数内不同逻辑块之间可空 1 行便于阅读deffirst():passdefsecond():pass第四部分如何设置编辑器统一格式、避免缩进错十三、核心设置Tab 4 个空格、用空格代替 Tab在VS Code、PyCharm等中建议Indent Using Spaces用空格缩进Tab Size / Indent Size 4Insert Spaces when pressing Tab按 Tab 键插入空格这样你按一次 Tab得到 4 个空格不会混入 Tab 字符。VS Code文件 → 首选项 → 设置搜索 “tab size”“insert spaces”在“针对 Python”里可单独设成 4 空格。PyCharmFile → Settings → Editor → Code Style → Python → Indent勾选 “Use space character”Indent size 填 4Tab size 填 4。十四、保存时自动格式化可选很多编辑器支持“保存时按 PEP 8 自动格式化”VS Code安装 Python 扩展后可启用 “Format On Save”并选择格式化工具如 autopep8、black。PyCharm可在 Settings → Tools → Actions on Save 里勾选 “Reformat code”。这样写完后保存缩进、空格等会自动统一减少手误。第五部分避免缩进错误——常见错误与改正十五、错误 1冒号后没有缩进现象IndentationError: expected an indented block原因冒号下一行没有比上一行多缩进。错误ifTrue:print(错)# 这行应该缩进改正ifTrue:print(对)十六、错误 2同一块内缩进不一致现象IndentationError: unexpected indent或unindent does not match any outer indentation level原因同一 if/for/def 块里有的行 4 格有的 2 格或 6 格或混用了 Tab 和空格。错误ifTrue:print(A)print(B)# 缩进和上一行不一致改正同一块内全部用相同缩进如都 4 格。ifTrue:print(A)print(B)十七、错误 3多缩进不该缩进的缩进了现象逻辑错误或unexpected indent。错误和 if/for 无关的代码也缩进了被当成块的一部分。x1y2# 错误顶层代码不应缩进改正x1y2十八、错误 4少缩进该在块里的没缩进现象逻辑错误本应在循环或 if 里多次执行的代码只执行了一次。错误foriinrange(3):print(i)# 没有缩进不属于 for只执行一次且 i 可能是上一次的值或报错改正foriinrange(3):print(i)十九、错误 5Tab 和空格混用现象看起来对齐了但报IndentationError或不同编辑器显示不一致。原因有的行用 Tab有的用 4 个空格Python 会把 Tab 和空格区分开导致“看起来对齐但实际缩进级别错”。改正全文只用空格推荐 4 格。在编辑器里开启“用空格代替 Tab”并可用“显示空白字符”检查是否还有 Tab。第六部分正确与错误示例对比二十、if / for / def 示例正确defgreet(name):ifname:print(你好,name)print(结束)# 和 if 同级属于 def错误print 缩进和 if 里的 print 不一致或“结束”误缩进到 if 里会导致逻辑或报错。# 错误示例# def greet(name):# if name:# print(你好, name)# print(结束) # 缩进错既不是 if 块也不是 def 块一致级别二十一、多层嵌套示例正确foriinrange(2):print(i ,i)forjinrange(2):print( j ,j)错误内层 for 的 print 若和外层 for 的 print 缩进一样就会变成“只属于外层 for”内层循环没有 body可能报错或逻辑错。第七部分小结与自检清单二十二、缩进自检清单每个带:的语句下面一行是否多缩进了一级同一 if/for/def 块里的每一行缩进是否完全一致有没有把“不该属于某块”的代码多缩进了有没有把“该在块里”的代码少缩进了整份文件是否只用空格或只用 Tab没有混用一级缩进是否统一为 4 个空格推荐二十三、小结表内容要点为什么重要缩进是语法决定代码块格式错会报错或逻辑错基本规则冒号后必须缩进同一块缩进一致不要多缩进、少缩进空格 vs Tab只选一种推荐全用 4 个空格编辑器设“Tab 插入空格”PEP 84 空格缩进、运算符逗号旁加空格、行不要太长、合理空行编辑器设 Tab4 空格、用空格代替 Tab可选保存时自动格式化常见错误冒号后未缩进、同块不一致、Tab与空格混用、该缩进未缩进