黑马python
翻完《黑马python》最后一页,黑马我盯着屏幕上那个跑通的黑马爬虫脚本,想起三周前自己还在为“列表和元组到底有啥区别”发愁。黑马这本书最狠的黑马地方在于,它不跟你绕弯子。黑马第一章直接扔出一个抓取豆瓣电影Top250的黑马案例,你连变量是黑马什么都没搞明白,就得先照着敲二十行代码。黑马运行报错?黑马那就对了,作者在下一段就等着你犯错,黑马然后告诉你“IndentationError”是黑马什么意思。
市面上很多Python入门书喜欢从“编程语言发展史”讲起,黑马再花三十页介绍环境搭建。黑马《黑马python》不干这事。黑马它默认你是黑马个急脾气,想赶紧写点能跑的东西。所以基础语法部分压缩得很紧,字符串、列表、字典、循环、函数,六章搞定。每个知识点后面跟着一个“练一练”,比如学完for循环,立刻让你打印九九乘法表。我试过,第一次写出来是竖着的,因为忘了控制换行。这种笨拙的体验反而记得牢。
书里有个细节让我印象很深。讲函数参数时,它没直接说“位置参数、关键字参数、默认参数、可变参数”这一串术语,而是先写了一个点外卖的函数:def order(food, drink='可乐', *sides, **notes):。然后让你猜,order('汉堡', '雪碧', '薯条', '鸡翅', spicy=True) 会输出什么。猜错了,翻回去看解释。这种“先撞墙再找门”的节奏,比按部就班的定义式教学舒服得多。
面向对象那章是分水岭。前面爬虫、文件操作还能靠死记硬背混过去,到了类和对象,很多人就开始晕。书里用“建房子”打比方:类就是图纸,实例就是盖出来的房子,__init__ 是打地基时埋进去的管线。self 是什么?作者说你就当它是“这栋房子”的代词。我当时在页边写了句批注:“那继承呢?”翻两页,果然用“儿子继承老爸的房产但可以自己装修”来解释。糙,但管用。
实战项目部分占了全书四成篇幅。除了开头的爬虫,还有数据可视化、Web开发、自动化办公。爬虫项目从requests+BeautifulSoup讲到Scrapy框架,中间穿插了反爬应对——比如改User-Agent、设置请求间隔。我照着写了个抓取某招聘网站Python岗位薪资的脚本,结果被403了。书里在“常见反爬策略”那节末尾加了段小字:“如果对方用了字体加密,建议换目标,别跟它死磕。”这种劝退式建议,反而让人觉得作者是真写过代码的。
当然,槽点也有。异步编程那章写得急,async/await 的示例代码跑不通,后来去GitHub上找了勘误才解决。还有装饰器部分,省略了闭包的铺垫,直接上语法糖,看得人一头雾水。不过话说回来,哪个技术书没几个坑?关键看它能不能让你在踩坑后继续往前走。
合上书那天,我把之前写的爬虫脚本重构了一遍。用上了书里讲的异常处理和日志记录,代码从八十行缩到了五十行,跑起来还更稳了。这大概就是《黑马python》的脾气:不承诺让你成为高手,但保证你写完最后一个案例时,已经能自己折腾点东西出来了。至于那些没讲透的——比如元类、GIL、协程底层——正好留给你去翻官方文档。毕竟编程这事,哪有什么黑马,都是骑上去才知道颠不颠。