题图:https://unsplash.com/@aaronburden
Python是一门足够简单但又非常强大的程序语言,应用领域甲冠天下,在WEB开发、WEB爬虫、科学计算、人工智能、云计算、数据分析、数据挖掘、系统运维、金融、游戏等领域都有完备且成熟的开源方案。一个有编程经验的程序员,从0写一个爬虫系统,通常就是一个下午的时间。恰逢人工智能元年,Python无可争议地成为当下最热门的语言之一,越来越多的人涌入到Python学习热潮中来。
然而,基础语法都知道,代码也基本能读懂,但是动手能力差,写代码没有任何头绪,开源项目中的代码稍微复杂就难以理解,这是很多初学者面临的困惑。国内 Python 教程良莠不齐,大多数仅停留在基础语法层面,这导致很多初学者甚至一些富有经验的开发者写出来的代码带有浓重的“口音”(从其它语言转移过来的编程思维),比如:
a = 1
b = 2
# 交换两个变量
tmp = a
a = b
b = tmp
这代码虽然能正确执行,但在 Python 中这是很不专业的写法,真正的 Pythonic 写法是:
a = 1
b = 2
a, b = b, a
又比如遍历带索引下标的集合对象时,非Python程序员首先想到的写法可能是先定义一个索引下标变量 :
colors = ['red', 'green', 'blue', 'yellow']
index = 0
for x in colors:
print(index, colors[index])
index += 1
如果你是一个有经验的Python程序员,那么你一定会想到 enumerate
函数能实现这样的功能。
colors = ['red', 'green', 'blue', 'yellow']
for index, color in enumerate(colors):
print(index, color)
诸如此类优雅的写法,还有很多高级特性,装饰器、生成器、迭代器、描述符等概念掺杂在一起让人望而生畏。棘手的字符编码问题,字节字符串与 Unicode 字符串在 Python2 中互相转换能把人逼疯。函数作为第一类对象在实际应用中有着举足轻重的作用,理解函数,也就是理解闭包、装饰器、作用域、命名空间、内省等概念。几乎无人问津的 Python 垃圾回收机制、以及协程并发等与性能相关的主题,你可能这辈子都用不着的元类(如果你要着手写一个框架,那么你不可避免地需要去理解元类的概念以及应用。)面向对象的精髓,如何高效地使用Python数据结构。
以上都是通往 Python 高手之路必须掌握的知识点。
然而,似乎从来没有一本书能够全面的从这些方面讲解,值得可贺的是,两年前一本叫做《Fluent Python》的书填补了 Python 社区没有像样的关于实战技巧、进阶提高书籍的空白。这本书经过两年时间的验证,口碑毋庸置疑,国内各种技术社区对此书都有不错的评论,英文版我有幸拜读过,它给我的工作以及写作提供了不少帮助,可纳入进阶程序员的必读书目。
一个利好消息,《Fluent Python》今年正式由图灵教育引进,中译本《流畅的Python》目前已经顺利出版。
作者 Luciano Ramalho 系 PSF研究员、知名 PyCon 演讲者。本书致力于帮助Python开发人员挖掘这门语言及相关程序库的优秀特性,避免重复劳动,同时写出简洁、流畅、易读、易维护,并且具有地道Python风格的代码。 关于书的详细介绍可以参考 年度最值得关注Python进阶书——《流畅的Python》 http://mp.weixin.qq.com/s/TxTzul33zyQh_VyklYpe_Q
福利时间
这次赠书活动由图灵教育赞助,感谢图灵的大力支持,我为大家争取了4本《流畅的Python》,另外我个人追加1本,总共5本书,书的价值是139,这次活动的玩法跟上次不太一样。
第0本书,赠送给至今赞赏公众号次数最多的读者 “若 然”,她一共赞赏了12次。
第1本书,赠给“不为乌合不为众”,他曾单笔赞赏33元,是至今为止单次赞赏最多的一位。
当然,还有很多读者一直默默地赞赏,以后的福利你们肯定是优先考虑的。虽然iOS用户没法正常地使用赞赏功能了,但如果愿意给公众号通过转账的方式赞赏的话了,顺带留下你的微信ID,方便我标识,在此一并感谢你们。
第2本书,我会从留言评论区选出我最喜欢的一条评论,不过这是一个很主观的事情,所以大家可随性发挥,指不定就是你。
第3,4本书,为了避免部分读者故意刷赞,特指定评论区点赞数第4和第5的读者作为幸运读者。
活动截止时间是5月21日,点击 阅读原文 亚马逊购买《流畅的Python》
欢迎大家留言、转发,祝好运。
iOS 用户专属赞赏通道
关注 Python之禅(id:vttalk),提高 Python 技术