做Python开发这几年,我见过太多让人哭笑不得的代码。有些写法明显是初学者留下来的,有些则是老程序员习惯不好。今天说说三种最常见的,一旦写了,同事看到多半会偷偷笑话你。
第一种:不用列表推导式,偏要手动循环
比如你要把一个列表里的数字都翻倍,有人会写这样的代码:
numbers = [1, 2, 3, 4, 5]
doubled = []
for n in numbers:
doubled.append(n 2)
这代码没问题,能跑。但同事看到会想,这人是不是从别的语言转过来的。Python里一行就能搞定的事情,你写了四行。正确的写法是:
doubled = [n 2 for n in numbers]
列表推导式是Python的特色功能,不用它等于白学Python。新手可能觉得循环更好理解,但项目大了,代码里全是这种手动循环,读起来会非常累。
第二种:到处用print调试,不知道有logging
很多人写代码喜欢在关键位置加print,看看变量值对不对。写完功能后,这些print又不删,要么注释掉,要么留在那里。结果代码提交到仓库里,别人运行时会看到一堆莫名其妙的输出。
正确的做法是用logging模块。它可以控制输出级别,可以写日志文件,可以带上时间戳。同事看到你代码里有print,会觉得你还在用初级阶段的方式调试。特别是生产环境的代码里出现print,那就是大问题。
用logging的方法很简单:
import logging
logging.basicConfig(level=logging.INFO)
logging.info('程序启动')
想关掉输出就改一下level,不想给用户看到就把级别设高。这才是专业做法。
第三种:变量命名让人猜谜
有些程序员喜欢用单个字母命名变量,比如a, b, c, d。或者用拼音,比如shuju, jieguo。再或者用毫无意义的名字,比如temp, test, foo, bar。
你写的时候觉得方便,但同事看你代码要猜很久。变量名就是代码的注释,好的命名能让代码自解释。比如定义一个用户列表,用user_list或者users,没人会理解错。用data或者list,别人就要猜这个data是什么数据,这个list里装的是什么东西。
还有人喜欢用flag这个变量,表示一个标志位。但flag具体表示什么状态?没人知道。不如直接写成is_completed或者has_error。
命名这件事,多花几秒钟,能省同事几十分钟。不光是方便别人,也是方便自己。过几个月回头看自己代码,好的命名能让你一眼看懂逻辑。
这三种写法,本质上都是没有充分利用Python的特性,也没有养成良好的编码习惯。同事之间嘴上不说,心里都有杆秤。写出干净、清晰的代码,是对团队负责,也是对自己负责。下次写代码时多想想,别让自己成为别人笑话的对象。