很多人写Python代码,写完自己看着还行,一给别人看,对方直接摇头。说不上哪里不对,就是感觉“丑”。这不是你水平问题,是你没摸到Python社区的审美套路。
Python官方其实有一份风格指南,叫PEP 8。这东西不是教你怎么写代码能跑,而是教你怎么写代码让人看着舒服。不用背全文,抓住几条核心规则,你的代码立马就不一样了。
第一招,缩进用4个空格。这事看起来小,但大部分丑代码都坏在这里。有人用Tab,有人用2个空格,还有人混着用。一旦编辑器渲染不一致,代码直接变成一团乱麻。统一用4个空格,不管什么编辑器打开都一样整齐。你把代码贴到给别人看,不会出现对不齐的尴尬。
第二招,行别写太长。显示器越来越宽,有人就喜欢一行写满。一眼扫过去要左右滚动的代码,谁都不愿意看。PEP 8建议每行不超过79个字符,这个标准有点严,你可以放宽松到100或120。不管定哪个数,长一行就要主动换行。用括号包裹内容就可以换行,比用反斜杠干净。
第三招,名字要让人一眼看懂。变量名和函数名,用下划线分隔的小写单词。类名用首字母大写的驼峰。千万别用拼音,别用a、b、c这种单字母。写delete_record比dr强一百倍。你三个月后回来看自己代码,看到dr要猜半天,看到delete_record直接知道意思。
第四招,空行不要乱用。函数之间空两行,类之间空两行,方法之间空一行。空行太多显得稀稀拉拉,太少又挤在一起喘不过气。一个函数内部,不同逻辑块之间用空行隔开,但别每行都空。就像说话,句号之间要喘气,但不能每说一个字就喘一次。
第五招,注释要写,但别写废话。很多人喜欢给每行代码都加注释,那叫干扰。注释要解释“为什么”,而不是解释“是什么”。代码本身就是“是什么”,读代码的人能看懂。比如你用一个奇怪的参数,注释要说为什么选这个数,而不是说这一行做了什么操作。
第六招,多余的括号不要留。Python里if语句的条件不用括号包裹。写if x == 1就好,别写if (x == 1)。这习惯很多人从别的语言带过来,去掉后代码看着干净不少。返回元组也不用写括号,return a, b就行。
第七招,导入要规范。每个import占一行,标准库放最前面,空一行放第三方库,再空一行放本地模块。不要直接用from module import ,你不知道导入了什么名字,容易冲突。指定导入的函数名,读者一眼能看到你用了什么。
第八招,比较时别拿True或None跟==比。判断一个变量是不是None,用if x is None。==会调用对象的比较方法,is才是真正的身份判断。判断一个列表是否为空,直接写if my_list,别写if len(my_list) == 0。Python里空对象在布尔上下文中就是False,这是语言自己的约定,按约定写最地道。
改完这些,你的代码会变样。一排排对齐,名字清楚,空行有节奏。别人打开你代码,不用问作者就知道是你写的,因为一眼就看出“这人懂规矩”。丑代码和漂亮代码,差的就是这些细节。动手改一下,今晚把最近的一段代码拿出来对着调,你会回来点赞的。