“Python游标卡尺”是调侃缩进嵌套过深的代码,因Python用空格/TAB作语法边界,多层if/for/try嵌套致可读性差、易出错,核心在于缩进兼具语法、格式与协作三重负担。
“Python游标卡尺”是个程序员圈内调侃梗,不是真指测量工具,而是讽刺某些Python代码缩进层次多、嵌套过深,像游标卡尺的精密刻度一样——一层套一层,密密麻麻,肉眼难数、手抖易错。
游标卡尺靠主尺+游标双刻度对齐读数,精度高但读起来费劲;类比到Python代码,就是靠空格或Tab的缩进层级来定义逻辑块,没有{}或end作视觉锚点。当函数里套if,if里套for,for里套try,再塞个match-case……缩进到了8、10甚至12层,人眼看不出哪段属于哪个块,编辑器也难自动对齐——就像拿着游标卡尺数毫米线,得屏息、对光、反复核对
。
IndentationError,多一个Tab可能就逻辑错位大家认可缩进提升可读性,但问题出在:它同时兼任了“语法界定符”“格式标记”“协作契约”三重角色。而现代编辑器早就能自动管理格式,真正需要机器推导的,应该是结构本身——比如用{}或end明确边界,缩进只负责好看。Python当年为适应1991年的文本编辑器做了取舍,今天再照搬,就有点像用算盘跑Excel。
guard clause提前返回,减少if嵌套(比如先检查参数无效就return,而不是包在if里写正文)pathlib、dataclasses、生成器等减少样板嵌套