从入门级选手到专业级选手都在做的——爬虫
用Python写爬虫的教程网上一抓一大把,据我所知很多初学Python的人都是使用它编写爬虫程序。小到抓取一个小黄图网站,大到一个互联网公司的商业应用。通过Python入门爬虫比较简单易学,不需要在一开始掌握太多太基础太底层的知识就可以很快上手,而且很快可以做出成果,非常适合小白一开始想做出点看得见的东西的成就感。
除了入门,爬虫也被广泛应用到一些需要数据的公司、平台和组织,通过抓取互联网上的公开数据,来实现一些商业价值是非常常见的做法。当然这些选手的爬虫就要厉害的多了,需要处理包括路由、存储、分布式计算等很多问题,与小白的抓黄图小程序,复杂度差了很多倍。
Web程序
除了爬虫,Python也广泛应用到了Web端程序,比如你现在正在使用的知乎,主站后台就是基于Python的tornado框架,豆瓣的后台也是基于Python。除了tornado(TornadoWebServer),Python常用的Web框架还有Flask(Welcome|Flask(APythonMicroframework)),Django(TheWebframeworkforperfectionistswithdeadlines)等等。通过上述框架,你可以很方便实现一个Web程序,比如我认识的一些朋友,就通过Python自己编写了自己的博客程序,包括之前的zhihu.photo,我就是通过Flask实现的后台(出于版权等原因,我已经停掉了这个网站)。除了上述框架,你也可以尝试自己实现一个Web框架。
桌面程序
Python也有很多UI库,你可以很方便地完成一个GUI程序(话说我最开始接触编程的时候,就觉得写GUI好炫酷,不过搞了好久才在VC6搞出一个小程序,后来又辗转Delphi、Java等,最后接触到Python的时候,我对GUI已经不感兴趣了)。Python实现GUI的实例也不少,包括大名鼎鼎的Dropbox,就是Python实现的服务器端和客户端程序。
人工智能(AI)与机器学习
人工智能是现在非常火的一个方向,AI热潮让Python语言的未来充满了无限的潜力。现在释放出来的几个非常有影响力的AI框架,大多是Python的实现,为什么呢?因为Python足够动态、具有足够性能,这是AI技术所需要的技术特点。比如基于Python的深度学习库、深度学习方向、机器学习方向、自然语言处理方向的一些网站基本都是通过Python来实现的。
机器学习,尤其是现在火爆的深度学习,其工具框架大都提供了Python接口。Python在科学计算领域一直有着较好的声誉,其简洁清晰的语法以及丰富的计算工具,深受此领域开发者喜爱。
早在深度学习以及Tensorflow等框架流行之前,Python中即有scikit-learn,能够很方便地完成几乎所有机器学习模型,从经典数据集下载到构建模型只需要简单的几行代码。配合Pandas、matplotlib等工具,能很简单地进行调整。
而Tensorflow、PyTorch、MXNet、Keras等深度学习框架更是极大地拓展了机器学习的可能。使用Keras编写一个手写数字识别的深度学习网络仅仅需要寥寥数十行代码,即可借助底层实现,方便地调用包括GPU在内的大量资源完成工作。
值得一提的是,无论什么框架,Python只是作为前端描述用的语言,实际计算则是通过底层的C/C++实现。由于Python能很方便地引入和使用C/C++项目和库,从而实现功能和性能上的扩展,这样的大规模计算中,让开发者更关注逻辑于数据本身,而从内存分配等繁杂工作中解放出来,是Python被广泛应用到机器学习领域的重要原因。
科学计算
Python的开发效率很高,性能要求较高的模块可以用C改写,Python调用。同时,Python可以更高层次的抽象问题,所以在科学计算领域也非常热门。包括scipy、numpy等用于科学计算的第三方库的出现,更是方便了又一定数学基础,但是计算机基础一般的朋友。