1、爬虫
python由于其强大的库生态,非常适合写爬虫,自带了urllib
beautifulsoup4等爬虫工具,可以请求并解析网页,利用他们便可以写出复杂的爬虫脚本;另外,python第三方库中还有requests、scrapy、PySpider之类的明星工具,集成了非常强大的爬虫系统;
其他语言也有爬虫库,但是python优势在于简洁,几行代码就可以实现一个爬虫:
# 导入urlopen函数
2、web开发
python并没有像java、go那么适合做web开发,但python的实力仍不容小觑,看看招聘网站上python开发的岗位也不少。
python中适合web开发的框架主要有Django、Flask、Tornado等,下面分别看看它们的优势。
企业级开发框架——Django
它是当前Python世界里最负盛名且最成熟的网络框架。最初用来制作在线新闻的Web站点,目前已发展为应用最广泛的Python网络框架。Django的各模块之间结合得比较紧密,所以在功能强大的同时又是一个相对封闭的系统,但是其健全的在线文档及开发社区,使开发者在遇到问题时能找到解决方法。
支持快速建站的框架——Flask
Flask是Python Web框架族里比较年轻的一个,于2010年出现,这使得它吸收了其他框架的优点,并且把自己的主要领域定义在了微小项目上。同时,它是可扩展的,Flask让开发者自己选择用什么数据库插件存储他们的数据。很多功能简单但性能卓越的网站就是基于Flask框架而搭建的,比如 http:// httpbin.org/ 就是一个功能简单但性能强大的HTTP测试项目。Flask是一个面向简单需求和小型应用的微框架。
高并发处理框架——Tornado
Tornado是使用Python编写的一个强大的可扩展的Web服务器。它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。Tornado作为FriendFeed网站的基础框架,于2009年9月10日发布,目前已经获得了很多社区的支持,并且在一系列不同的场合中得到应用。除FriendFeed和Facebook外,还有很多公司在生产上转向Tornado,包括Quora、、 http:// Bit.ly 、Hipmunk及MyYearbook等。
3、机器学习&深度学习
说到AI,这应该是python的看家本领了,其数据科学生态可谓波澜壮阔、群星云集,不仅有tensorflow、pytorch、caffe、keras等主流框架,还有Gensim、NLTK、OpenCV、Mahotas等专注于nlp、cv细分领域的经典工具。
世界上最大的数据科学比赛网站kaggle支持的主要语言就是python,无非是因为python简洁的语法,以及丰富的支持库。
简单介绍一下机器学习和深度学习的区别。
机器学习:
机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。器学习直接来源于早期的人工智能领域,传统的算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。从学习方法上来分,机器学习算法可以分为监督学习(如分类问题)、无监督学习(如聚类问题)、半监督学习、集成学习、深度学习和强化学习。
深度学习:
深度学习是一种实现机器学习的技术。
深度学习本来并不是一种独立的学习方法,其本身也会用到有监督和无监督的学习方法来训练深度神经网络。但由于近几年该领域发展迅猛,一些特有的学习手段相继被提出(如残差网络),因此越来越多的人将其单独看作一种学习的方法。
几种常用的框架:
TensorFlow (Google)
TensorFlow最初是由Google Brain Team的研究人员和工程师开发的。其目的是面向深度神经网络和机器智能研究。自2015年底以来,TensorFlow的库已正式在GitHub上开源。TensorFlow对于快速执行基于图形的计算非常有用。灵活的TensorFlow API可以通过其GPU支持的架构在多个设备之间部署模型。
TensorFlow已被广泛应用于学术研究和工业应用。一些值得注意的当前用途包括Deep Speech,RankBrain,SmartReply和On-Device Computer Vision。
Keras
深度学习框架在两个抽象级别上运行:低级别--数学运算和神经网络基本实体的实现(TensorFlow, Theano, PyTorch etc.)和高级别--使用低级基本实体来实现神经网络抽象,如模型和图层(Keras) 。
Theano (蒙特利尔大学)
Theano是另一个用于快速数值计算的Python库,可以在CPU或GPU上运行。它是蒙特利尔大学蒙特利尔学习算法小组开发的一个开源项目。它的一些最突出的特性包括GPU的透明使用,与NumPy紧密结合,高效的符号区分,速度/稳定性优化以及大量的单元测试。
PyTorch (Facebook)
Pytorch在学术研究者中很受欢迎,也是相对比较新的深度学习框架。Facebook人工智能研究组开发了pyTorch来应对一些在它前任数据库Torch使用中遇到的问题。
4、自动化测试
自动化测试(尤其是单元测试的自动化),是 极限编程 和 敏捷软件开发的一个关键特征,这也被称为测试驱动开发 (TDD)。 单元测试的用例可以在代码编写完成之前就设计好,并作为功能的一种定义形式存在。随着新的代码不断完成编写,单元测试随之进行,缺陷被不断找出,因而代码也不断得到改进。由于开发人员能够及时发现缺陷然后立即作出改变,修复的代价大大减小,这种不断发展的开发方式被认为比瀑布模型这类开发结束再测试的方式更为可靠。
python自动化测试也是不错的选择,目前主要用selenium、pyppeteer、pytest。