[中文地址:如何成为Python高手 | 外刊IT评论]
[英文原文:How to become a proficient Python programmer ]
这篇文章主要是对我收集的一些文章的摘要。因为已经有很多比我有才华的人写出了大量关于如何成为优秀Python程序员的好文章。
我的总结主要集中在四个基本题目上:函数式编程,性能,测试,编码规范。如果一个程序员能将这四个方面的内容知识都吸收消化,那他/她不管怎样都会有巨大的收获。
函数式编程
命令式的编程风格已经成为事实上的标准。命令式编程的程序是由一些描述状态转变的语句组成。虽然有时候这种编程方式十分的有效,但有时也不尽如此(比如复杂性) —— 而且,相对于声明式编程方式,它可能会显得不是很直观。
如果你不明白我究竟是在说什么,这很正常。这里有一些文章能让你脑袋开窍。但你要注意,这些文章有点像《骇客帝国》里的红色药丸 —— 一旦你尝试过了函数式编程,你就永远不会回头了。
- http://www.amk.ca/python/writing/functional
- http://www.secnetix.de/olli/Python/lambda_functions.hawk
- http://docs.python.org/howto/functional.html
性能
你会看到有如此多的讨论都在批评这些“脚本语言”(Python,Ruby)是如何的性能低下,可是你却经常的容易忽略这样的事实:是程序员使用的算法导致了程序这样拙劣的表现。
这里有一些非常好的文章,能让你知道Python的运行时性能表现的细节详情,你会发现,通过这些精炼而且有趣的语言,你也能写出高性能的应用程序。而且,当你的老板质疑Python的性能时,你别忘了告诉他,这世界上第二大的搜索引擎就是用Python写成的 —— 它叫做Youtube(参考Python摘录)
http://jaynes.colorado.edu/PythonIdioms.html- http://www.whoishostingthis.com/resources/python/
- http://wiki.python.org/moin/PythonSpeed/PerformanceTips
测试
如今在计算机科学界,测试可能是一个最让人不知所措的主题了。有些程序员能真正的理解它,十分重视TDD(测试驱动开发)和它的后继者BDD(行为驱动开发)。而另外一些根本不接受,认为这是浪费时间。那么,我现在将告诉你:如果你不曾开始使用TDD/BDD,那你错过了很多最好的东西!
这并不只是说引入了一种技术,可以替换你的公司里那种通过愚蠢的手工点击测试应用程序的原始发布管理制度,更重要的是,它是一种能够让你深入理解你自己的业务领域的工具 —— 真正的你需要的、你想要的攻克问题、处理问题的方式。如果你还没有这样做,请试一下。下面的这些文章将会给你一些提示:
- http://www.oreillynet.com/lpt/a/5463
- http://www.oreillynet.com/lpt/a/5584
- http://wiki.cacr.caltech.edu/dan…._Integration_testing
- http://docs.python.org/library/unittest.html
编码规范
并非所有的代码生来平等。有些代码可以被另外的任何一个好的程序员读懂和修改。但有些却只能被读,而且只能被代码的原始作者修改 —— 而且这也只是在他或她写出了这代码的几小时内可以。为什么会这样?因为没有经过代码测试(上面说的)和缺乏正确的编程规范。
下面的文章给你描述了一个最小的应该遵守的规范合集。如果按照这些指导原则,你将能编写出更简洁和漂亮的代码。作为附加效应,你的程序会变得可读性更好,更容易的被你和任何其他人修改。
- http://www.python.org/dev/peps/pep-0008/
- http://www.fantascienza.net/leonardo/ar/python_best_practices.html
那就去传阅这这些资料吧。从坐在你身边的人开始。也许在下一次程序员沙龙或编程大会的时候,也已经成为一名Python编程高手了!
祝你学习旅途顺利。
《 “[collect]如何成为Python高手” 》 有 6 条评论
YouTube 什么时候成了搜索引擎了?
我特地去英文原文中找到的对应的地方:
然后去Python quotes中找到:
所以,中文的翻译(直译)是没有问题的,可能作者觉得YouTube不仅仅是表面上看到的视频分享网站,而是一个用Python架构起来的高效视频搜索、整理的引擎,因此这样说。
谢谢你的指证,也欢迎再次光临~~
Python 老鸟想告诉新手的事情(Reddit 转帖)
https://www.reddit.com/r/Python/comments/7cs8dq/senior_python_programmers_what_tricks_do_you_want/
https://www.kawabangga.com/posts/2460
https://docs.quantifiedcode.com/python-anti-patterns/
Python资源整理合集
https://weibo.com/ttarticle/p/show?id=2309404200174363762670
`
网页框架
Django
Flask
Tornado
其他Web相关
用户图形接口相关
网络相关
数据库相关
游戏相关
开源框架
大数据与人工智能相关
网络爬虫
测试与代码分析审核
安全与破解相关
图表及图像相关
语音相关
运维相关
树莓派
第三方平台
IDE
其他库
博客与播客及书籍文档
好的文章
他人总结
`
Python 爬虫的工具列表大全
https://mp.weixin.qq.com/s/X9NPFFTHTk62V21o63ceOA
`
网络
网络爬虫框架
HTML/XML解析器
文本处理
特定格式文件处理
自然语言处理
浏览器自动化与仿真
多重处理
异步
队列
云计算
电子邮件
网址和网络地址操作
网页内容提取
WebSocket
DNS解析
计算机视觉
代理服务器
其他Python工具列表
`
Python programs, usually short, of considerable difficulty, to perfect particular skills.
https://github.com/norvig/pytudes
`
# pytudes – 旨在提升/完善特定的Python编程技能的项目
“An étude (a French word meaning study) is an instrumental musical composition, usually short, of considerable difficulty, and designed to provide practice material for perfecting a particular musical skill.” — Wikipedia
étude(法语单词,意思是研究)是一种器乐作品,通常较短,难度较大,旨在为完善某一特定音乐技能提供练习材料。——维基百科
This project contains pytudes—Python programs, usually short, for perfecting particular programming skills.
这个项目包含 pytudes-Python 程序,通常很短,用于完善特定的编程技能。
# Who is this for?
To continue the musical analogy, some people think of programming like Spotify: they want to know how to install the app, find a good playlist, and hit the “play” button; after that they don’t want to think about it. There are plenty of other tutorials that will tell you how to do the equivalent of that for various programming tasks—this one won’t help. But if you think of programming like playing the piano—a craft that can take years to perfect—then I hope this collection can help.
继续用音乐类比,有些人会想到像Spotify这样的程序:他们想知道如何安装应用程序,找到一个好的播放列表,然后点击“播放”按钮;在那之后,他们就不想去想它了。还有很多其他的教程会告诉你如何在各种编程任务中做同样的事情——这个教程在这些方面不会有帮助。但如果你认为编程就像弹钢琴一样——一门需要数年才能完善的技艺——那么我希望这本合集能有所帮助。
`