写Python最大的快乐就是三行代码解决别人三十行的需求。这种快乐很真实。比如你要把一个列表里的字符串全部转成大写。新手可能会写个for循环。用列表推导式一行就搞定了。[s.upper() for s in list] 别人看代码还得数行数,你这一行就摆在那。这种快乐叫“效率碾压”。
再比如读取一个文件的所有内容。传统做法要open、read、close三步走。用with语法两行搞定。with open(‘file.txt’) as f: content = f.read() 代码少一点,逻辑就清楚一点。别人还在纠结文件有没有关闭,你已经拿到数据开始处理了。这种快乐叫“少操心”。
有一次我要把两个列表合并成字典。同事写了个循环,加了一堆判断。我直接用了zip函数。dict(zip(keys, values)) 三行都不要,一行就够了。同事看了沉默了好一会。这种快乐叫“降维打击”。
Python最牛逼的地方就是标准库里已经帮你准备好了90%的工具。你想把字符串里的空格去掉。用split和join组合一下。‘ ’.join(s.split()) 别人可能要写正则表达式。你不需要。这种快乐叫“用对了方法”。
写Python久了会形成一种条件反射。遇到重复操作先想想有没有内置函数。比如计算一个列表的元素出现次数。from collections import Counter Counter(list) 两行代码得到字典结果。比手写计数器舒服太多了。这种快乐叫“偷懒有理”。
有时候三行代码解决的不只是三十行功能。还有三十个潜在bug。你把循环体压缩成表达式,变量作用域就变小了。出错的概率也跟着变小。同事问我怎么写出bug这么少的代码。我说我代码写得少。代码行数少,藏bug的地方就少。这是最直白的道理。
我记得有次做数据清洗。别人写了三层嵌套if-else。我用了一个字典映射。mapping = {‘a’:1, ‘b’:2, ‘c’:3} result = [mapping.get(x, 0) for x in data] 两行代替了三十行。测试的时候别人还在调试逻辑,我已经跑通全部结果。这种快乐叫“早下班”。
Python的语法糖特别多。你用得越熟练就越能写出短而有力的代码。比如同时交换两个变量。a, b = b, a 一行代码。其他语言要搞个临时变量。这种简单粗暴的解决方式特别让人上瘾。你写得越多就越不想回头。
最后想说一句。用三行代码解决三十行需求不是炫技。是对自己的脑子好。代码量少意味着你好维护。未来别人接手你的代码,看到这么精炼的表达,也会夸你一句写得好。这种快乐叫“被认可”。
写Python的快乐就是这么实在。你不需要写很多废话。直击要害就行。跟人聊天也一样。话不多但句句在点上。这大概就是Python教给我们的道理。少即是多。