class Animal():
# 私有属性
__age = 10

# 构造方法
def __init__(self, name):
self.name = name

def eat(self, food):
self.food = food

如上代码,如果稍微少个缩进,整个代码就无法运行,而且有时候难以识别。我常用 IDEA 的 CTRL+SHIFT+F 进行代码格式化,少个缩进整个代码都不好了,大家有什么好的使用经验,刚接触 python 小白一个,勿喷!

游标卡尺你值得拥有

没啥好办法,所以是“面向游标卡尺编程”。有没有大佬补充

我们都是左手拿尺,右手打码,一边量一边打

我写 python 写多了反而觉得好像看大括号不习惯了,我使用的习惯就是尽可能先写类和函数定义,然后再写函数内容,写完一个函数测试没问题就把它折叠起来了不过我也确实经常遇到折腾老半天最后发现是缩进问题...语言就这样,你还能咋办呢...

多写,当你写的足够多了,你就可以一眼就看出缩进问题,就不需要游标卡尺了。

除非你是使用记事本的大神,否则任何一个支持 python 的编辑器都能很好的对齐,或者有辅助线

缩进有问题,换 IDE !

所以这也是为什么现在许多语言都不这么干了。。因为很不方便,大括号做代码段的格式化会非常方便,空格就不是那么好办了,而且大括号不会导致 tab 和空格之间的混用问题(虽然很讨厌混用)

vscode 和 idea 都能启用显示空白字符,这样应该容易一些,不过 python 格式就这样,我遇到需要滚动的代码,对齐确实麻烦点。

我个人对于代码优雅的审美观念,就是越少符号越 pythonic

报错会提醒是哪一行缩进不对的

你都用 Idea 了,你试试用 pycharm 呗,缩进这种基础问题 IDE 会帮你找出来报红的。ctrl + shift + L 自动格式化ctrl + shift + O 自动优化 imports也可以装插件。

不过长代码确实靠缩进定位很蛋疼,但是 IDE 也是贴心的提供了一条竖线可以定位的。还有就是分享的时候,某些情况会丢格式,那这样 python 缩进就不见了,代码也乱了。

彩虹缩进

那也不一定,除非缩进那行引起了语法错误,但大部分时候可能并没有语法错误,比如 if/while 语句这种

vscode 的话可以直接规范缩进,习惯之后还是很清晰的

刚接触前端时用的 pug 、stylus 也是这样,当时觉得靠缩进很酷与众不同。后面代码量上来了,看自己的难受,看别人的根本不想看,就找几个晚上全给它改掉了,真是折磨。

缩进不都是以 4 个空格为单位吗? IDE 基本帮你适配好了,一个 tab 就搞定了,你写其他代码没有养成 tab 缩进习惯吗?

#15没有执行错误就只能靠 IDE+扩展,pyright 可以提醒,如果是逻辑错误那就没办法其实用括号也有相似问题,我有次 js 也是遇到没有执行错误但结果不对的,查了很久就是括号定位不对——之前修改的时候删错了,但碰巧又配对了,结果两个代码块一起执行了

习惯了就好了,用多之后根本不会少缩进,读码也本能反应,偶尔复制粘贴会落个缩进什么的,回头扫一眼就会发现,看起来非常突兀。敲其他大括号语言也强迫症式对齐,不然浑身不舒服。

你需要这个: i.postimg.cc/tCv2Qhfp/20240612163049.jpg

设置一下 tab 变成 4 个空格 缩进 py 特色

其实写习惯了并不会有什么困扰,别嵌套太多层,没那么容易写错。这玩意儿主要的问题还是:跟现代 IDE 协作不太好。写其它语言很多时候先复制一段代码然后 format 来自动调整,但 python 里就没法这么干

换语言吧, 来学 go

有啥难受的,写作文不是靠缩进分段么一个道理,缩进层级很多说明你代码设计又问题

三四层的很正常好吧

if a: doA() doB() 被改为if a: doA()doB()这种情况是最难一眼看出问题的

if a:··doA()··doB()被改为if a:··doA()doB()

#28 的确,这种代码一旦丢失缩进就很难复原,需要和业务逻辑结合,这也是缩进的最显著弊病之一。

有些论坛和社交软件,发送的代码片段,不知道是发送者自己现场写懒得缩进还是复制过去文本内容被平台格式化导致丢失缩进,发文效果大致 #27 ,如果是不使用一对符号标记作用域的语言,看得难受死

我觉得还好,每个方法尽量不要写太长就还行

pycharm 会自动显示的。

你可能需要彩虹缩进插件 marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow
在其他不用缩进的语言里调也不失为一种方法 github.com/JuliaPy/PythonCall.jl

你就当格式化工具不存在吧,自己一边写代码,一边人肉自己格式化自己写的代码。(或许这就是 python 这么设计的初衷

这个构造方法的注释有点绷不住了