建议翻阅并订阅 Pycoder’s Weekly,看看全球其他 Pythonista 在做什么,有没有你感兴趣的东西,根据兴趣学习是最轻松也最有成效的方法。一些现成的建议:

  • 折腾好 iPython,搭配 NumPy / SciPy / pandas 之类可以迈向高收入低竞争行业:数据分析师,或者只是简单地满足你对数学或者统计学方面的兴趣,if any;
  • Python Imaging Library 可以学图像处理,进一步用 SimpleCV / OpenCV 可以做视觉识别,玩摄像头或者 Kinect;
  • 买一只 Raspberry Pi,可以做个小传感器、机器人什么的;
  • 喜欢研究底层,可以去学 Cython 做扩展;
  • 喜欢语言学,可以去摸摸 NLTK;
  • 其实很多需要批量处理的苦功可以用 Python 自动化——比如把一批 PDF 里面的水印去掉,或者把数据从一堆报告里提出来转化为另一种格式;
  • 最后实在是不争气对 web 感了兴趣,那 Django 可以让你「看书搭站继续学」,嫌重可以用 Flask,甚至从这里出发把前端的东西弄清楚也不是不可能的,但人活一世,何必堕落至此……

单纯「练习」的话可以找一些「编程 kata」。


推荐一个做小项目的网址:Yixiaohan/show-me-the-code ,放心这些项目不是那种九九乘法表一类的无趣项目,你完全可以clone一份题目下来自己练习。

另外,这些项目有一些别人写的不错的代码,当你遇到困难的时候还可以参考:Show-Me-the-Code/python

如果上面这些项目你都做完了,觉得没有挑战,你也可以看看全球的学习Python的人都在用Python干什么:A Weekly Python E-Mail Newsletter ,你也可以练习查看并且提交自己的作品。

最后结合自己的情况,提点小意见:

  • 对web感兴趣,想做一个博客或者其他网站,可以用Flask/Django
  • 想做一些类似机器人的可以用树莓派+Python
  • 研究自然语言处理、文本情感分析、文本关系可以用一些NLKT/gensim库

但是练习别人的已有的项目总是无趣的,我之前也说过,学习Python最好的方式是:「follow your heart.」,所以我觉得使用Python最好的场景是:我想要Python做什么?那么基于我的目的,我能不能自己独立完成?如果不行看看其他人做的比较好的项目,或者有没有第三方库可支持,不要重复造轮子,然后「Just do it」,怎么找到需要的第三方库呢?

这里引用我之前的一个回答:如何找到适合需求的 Python 库?

我推荐另一个比较常用的方法,在之前的文章中我推荐过一个有关于整理Python资源相关的Github项目:vinta/awesome-python: A curated list of awesome Python frameworks, libraries, software and resources

在这个项目中,作者把所有的Python资源包括库资源等分成了几十个大类:数据挖掘、数据可视化、日期和时间处理、数据库相关……等等,在每个大类中归类了该类下的所有资源,并且该资源的首页有各个大类的索引。

在这个大背景之下,假设我现在想找一个Python操作MongoDB的库,我们就首先点击最上面的索引:Database Drivers直接跳转到数据库相关库的地方。

跳转之后,如下界面,我们就可以直接寻找到我们需要的库了。

当然,因为所有的资源都在同一个页面,所以我们同时可以使用浏览器自带的搜索功能,在Chrome下是Ctrl+F12,在该页面直接搜我们需要的某个功能关键词,比如:MongoDB,

当然,这样搜索出来的结果可能不仅仅是一条,这样就需要你自己排查以下哪一个才是你真正那个需要的库资源了。找到需要的库之后,实现你最初的IDEA,当然找不到的话只能自己去实现了!

很多人问我如何学习Python爬虫,为此我整理编写了一本Python爬虫相关的电子书,主要包括Python入门、Python爬虫入门到进阶、Python爬虫面试总结等等。可以在微信公众号【一个程序员的日常】后台回复关键词【1】获取这本电子书。

利益相关:实验楼

编程是门手艺活儿,如果想从事程序员的工作,项目经验一定是一个绕不过去的坎儿。 之前同事招实习生时面试过一位计科的学霸,一名已经保研的女生,成绩非常好,跟她聊了会项目经验,结论是属于刷题型人才,动手能力基本为0,只能Pass掉……

所以 Learn by doing 才是正确的技术学习姿势,对于想系统地学习编程,但找不到方法和姿势;或者刚入门编程,找不到项目练手的同学,强烈建议来「实验楼」做几个项目,在实践中找到代码的手感……

在「实验楼」,你可以发现多条技术路径,每个路径中都由若干个项目组成,并根据难度、类别被划分成不同的模块。其中,Python路径现在有77门课程,包含「入门知识」「Python基础」「Web框架」「基础项目」「网络编程」「数据与科学」「综合项目」这几个模块。

项目由易到难,代码量从几十行到几千行,在实验楼的虚拟linux环境中都可以完成。找到你认为有趣的去实现它,把项目做出来,知识才能变成自己的:)

链接在这里Python研发工程师学习路线(建议PC端访问,边看教程边在环境里动手实践,手机上仅可查看教程)

「基础项目」:

1. Python – 200行Python代码实现2048

仅用200行的python代码完成2048小游戏的编写。


2. Python开发简单计算器

使用 Python 开发一个简单的加减计算器,学习字符串处理、表达式二叉树的生成及遍历。


3. Python 破解验证码

通过一个简单的例子来实现破解验证码。


4. Python3 图片隐写术

通过Python3将关键信息隐藏在图片里,传递你的小秘密~


5. Python3 色情图片识别

使用 Python3 识别图片是否为色情图片 。


6. 基于 Flask 及爬虫实现微信娱乐机器人

做一个会给你讲笑话的微信后台机器人,学习并实践 python 编程,Flask Web 开发以及微信公众平台开发机器人的基本步骤。


7. Python – 使用 Python 解数学方程

使用python 来解决方程组问题,微积分问题,矩阵化简 。


8. Python3 & OpenCV 视频转字符动画

使用 OpenCV 处理图片视频,将视频转为字符画序列,再在终端中播放字符动画。 效果爆炸。


9. 川普撞脸希拉里(基于 OpenCV 的面部特征交换)

通过 OpenCV 库来实现人脸面部特征交换,其实就是将第二张人脸的眼睛、鼻子和嘴巴通过程序自动裁剪适配并覆盖到第一张人脸上,效果略惊悚……


10. pygame开发打飞机游戏

使用Python快速开发一款PC端玩耍的微信打飞机游戏,基于pygame实现。 难度比较高。

「网络项目」:

基本是一些爬虫、信息安全、点对点通讯的课程。相信很多人学Python都是冲着强大的爬虫功能去的。

Python3 实现火车票查询工具使用 Python3 抓取 12306 网站信息提供一个命令行的火车票查询工具。 可以熟悉 Python3 基础及网络编程,以及 docopt,requests,prettytable 等库的使用。


2. Python3 实现淘女郎照片爬虫

使用 Python 实现一个淘宝女郎图片收集爬虫,学习并实践 BeautifulSoup、Selenium Webdriver 及正则表达式等知识。


3. 给Python3爬虫做一个界面.妹子图网实战

利用PyQt和Python爬虫,做一个有交互界面的老司机爬虫程序!


4. Flask 实现简单聊天室

实现一个基于Server-Sent Event和Flask简单的在线聊天室,需要有 Flask 和 Python 基础。


5. Python3 实现可控制肉鸡的反向Shell

使用 Python3 实现了可控制肉鸡的反向Shell连接,主要学习反向Shell的实现方法。实验涉及Tcp协议、Scoket基本用法、多线程编程。难度较高,需要具备网络编程的知识,以及计算机网络的知识。

「数据与计算 」:

Python在大数据领域的应用不必多说,想学习Python数据分析的话可以看看下面的课程。


基于 Flask 与 MySQL 实现番剧推荐系统
基于 Python 的 Flask 框架和 MySQL 实现的简单的番剧推荐系统。


2. Python基于共现提取《釜山行》人物关系

Python文本分析的课程。 使用python编写代码分析文本中人物的共现关系,完成对《釜山行》文本的人物关系提取,并利用Gephi软件对提取的人物关系绘制人物关系图。


3. Twitter数据情感分析

使用Spark MLlib对Twitter上的流数据进行情感分析,并且利用Python的工具包basemap可视化美国不同的州对于曾经的总统候选人希拉里及川普的情感分析结果,通过地理信息可视化我们可直观的感受到这两位候选人的受欢迎程度。


4. ebay在线拍卖数据分析

利用ebay上的拍卖数据进行数据分析,实现通过数据判断拍卖最终是否可以成功交易和预测最终成交的价格。

「综合项目」:

综合项目难度较高, 对环境占用资源较大,大多属于会员及训练营项目。

项目就介绍到这里,敲完代码不要忘了上传到GitHub上,对程序员的职业发展很有好处。快去找个喜欢的项目开始撸吧! Python研发工程师学习路线