Python 应用领域及学习重点
您的“关注”和“点赞”,是信任,是认可,是支持,是动力......
如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。
笔者认为不管学习什么编程语言,首先要知道:学完之后在未来能做些什么?
本文将浅谈 Python 的应用领域及其在对应领域的学习重点。也仅是介绍了 Python 应用领域的“冰山一角”,有兴趣的读者可以再自行搜索资料进行了解。
Python 的应用领域是极其广泛的,几乎所有大中型互联网企业都在使用 Python 完成各种各样的任务。想详细了解,请参见下文,如有不妥之处,敬请留言指正,笔者必会虚心采纳。
一 Python 在世界上的知名应用
以下内容,将列举出 Python 在大家所熟知的一些国内外公司企业中的应用。
1 国内应用
1.1 豆瓣
我们经常访问的集电影、读书、音乐于一身的豆瓣网,一开始就是使用 Python 作为 Web 开发的基础语言,几乎所有的业务都是通过 Python 实现的。
1.2 知乎
国内最大的问答社区,知乎的整个架构都是基于 Python 开发的。
1.3 百度
如果说阿里巴巴主要是用 Java 语言,京东主要是用 Linux 和 Objective-C,华为主要是用 C、Unix 或 Linux,那么百度主要使用的就是 Python 和 PHP。
1.4 春雨医生
国内知名在线医疗网站,是用 Python 开发实现。
当然,还有很多知名企业,例如新浪、搜狐、腾讯、阿里、网易、淘宝、汽车之家、美团等等企业或多或少都在使用 Python 完成各种各样的任务。
2 国外应用
2.1 谷歌(Google)
全球最大的搜索引擎公司谷歌,在 Google App Engine、code.google.com、Google eaty、谷歌爬虫、Google 广告等项目的开发中都大量的使用到了 Python 。
2.2 YouTube
世界上最大的视频网站 YouTube 就是用 Python 开发而成。
2.3 Facebook
Facebook 中大量的基础库都是通过 Python 来完成的。
2.4 Yahoo!Groups
雅虎推出的群组交流平台。
2.5 CIA
美国中情局,美国中情局网站就是用 Python 开发而成。
2.6 NASA
美国航天局,自 1997 年,NASA 就大量使用 Python 进行各种复杂的数据分析和运算。
2.7 Dropbox
美国最大的在线云存储网站,都是用 Python 实现,每天网站几乎会处理10亿个文件的下载和上传。
2.8 Instagram
美国最大的图片分享社交网站,每天超过3千万张照片被上传分享,也全部都是 Python 开发而成。
2.9 Redhat
包管理工具,世界上最流行的 Linux 发行版中用于 RPM 兼容的 yum 包管理工具就是 Python 开发的。
以上列举出部分企业,当然还有很多的企业都在使用 Python。
二 总结 Python 应用领域及其学习重点
1 Web 应用开发
Python 经常被用于 Web 开发,尽管目前不属于 Web 开发的主流语言,但 Python 上升势头很猛,尤其随着 Python 的 Web 开发框架逐渐成熟作为“助燃剂”,程序员可以更轻松地开发和管理复杂的 Web 程序,Python Web开发成为一个不错的选择。
例如,通过 mod_wsgi 模块,Apache 可以运行用 Python 编写的 Web 程序。Python 定义了 WSGI 标准应用接口来协调 HTTP 服务器与基于 Python 的 Web 程序之间的通信。另外,Python+Django架构,应用范围非常广,开发速度非常快,学习门槛也很低,能够帮助你快速的搭建起可用的WEB服务。
学习重点
Django
Django 是高水准的 Python 编程语言驱动的一个开源模型。视图,控制器风格的 Web 应用程序框架。使用这种框架程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。
Pyramid
Pyramid是一个小型,快速的Python Web 应用程序框架,既适合开发大型项目,也适合小项目,它拥有非常好的性能。
Tornado
Tornado 就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本。Tornado 和主流 Web 服务器框架(包括大多数 Python的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个理想框架。
Flask
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
web.Py
web.py 是一个轻量级Python web框架,它简单而且功能强大。web.py是一个开源项目。该框架由已故美国作家Reddit联合创始人、RSS规格合作创造者、著名计算机***Aaron Swartz开发。web.py已被很多家大型网站所使用。
Bottle
Bottle是一个快速、简洁、轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块。
TurboGears
TurboGears是一个提供网页前端到后端整合的网站框架,使用 Python 动态语言。 Python 语言上有无数网页开发模组可选择。要挑选合适的模组会花上开发者宝贵的时间精力,TurboGears 就像是 Python 网页开发上的发布套件,整合各种推荐的 Python 开放源代码模组,提供简单易用的界面与一致的系统体验。
Zope
Zope是一个开放源代码的Web应用服务器,Zope目前有2个比较独立的版本,Zope 2系列和Zope 3系列。Zope 3是汲取了Zope 2的教训,对Zope 2的重写,是一个采用了现代设计模式的、基于组件架构的应用服务器。有人说Zope 3就是一个Python版本的轻量级J2EE框架。 Zope 2特别适合脚本开发人员,直接通过浏览器就可快速构建一个应用。
2 网络编程
Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫等。例如 Python 提供了丰富的模块支持 Socket(套接字) 编程,可以方便快速的开发分布式应用程序。
学习重点
Twisted
第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。Twisted是用Python实现的基于事件驱动的网络引擎框架,是python中一个强大的异步IO库。理解twisted的一个前提是弄清楚twisted中几个核心的概念: reactor, Protocl, ProtocolFactory, Deffered
Requests
Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库。
在处理URL资源上它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。
Scrapy
Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Paramiko
paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方式。可以实现远程命令执行、文件传输、中间SSH代理等功能,相对于Pexpect,封装的层次更高,更贴近SSH协议的功能。
3 GUI 图形开发(桌面应用)
Python 提供了PIL、Tkinter等图形库,能方便进行图形处理。PyQt、PySide、wxPython、PyGTK是Python快速开发桌面应用程序的利器。
学习重点
wxPython
wxPython是Python语言的一套优秀的GUI图形库。允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。 wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户的。
比如安装ulipad要安装wxPython库才能正常完整工作。
PyQT
PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。PyQt是由Phil Thompson 开发。
PyQt实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。 PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL的版本只能用在Unix上,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。
Kivy
Kivy是开源Python函式库,用于开发行动应用程序和其它采用自然用户界面的多点触控应用软件。它可以在Android,iOS,Linux,OS X和Windows执行。采用MIT授权条款,Kivy是自由并且开源的软件。
4 运维自动化
Python 是运维工程师的首选编程语言,在运维自动化领域已经深入人心。
Python 是跨平台的,在很多操作系统中 Python 属于标准的系统组件。例如大多数 Linux 发行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在终端下直接运行 Python。另外,Python 标准库中包含了多个可用来调用操作系统功能的库。例如,通过 pywin32 这个软件包,我们能访问 Windows 的 COM 服务以及其他 Windows API;使用IronPython,我们能够直接调用 .Net Framework。
所以说,一般情况下 Python 编写的系统管理脚本,无论是可读性,还是性能、代码重用度以及扩展性方面,都优于普通的 shell 脚本。
学习重点
OpenStack
OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会)发布的一个自由软件许可证)授权的开源代码项目。
OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。
SaltStack
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。
通过部署SaltStack,我们可以在成千万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。
Ansible
Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
腾讯蓝鲸
蓝鲸配置平台是一款面向应用的CMDB,在ITIL体系里,CMDB是构建其它流程的基石,而在蓝鲸智云体系里,配置平台扮演着基石的角色,为应用提供了各种运维场景的配置数据服务。
5 人工智能领域
人工智能是目前非常火的一个研究方向,如果要评选当前最热、工资最高的 IT 职位,那么人工智能领域的工程师最有话语权。而 Python 在人工智能领域内的机器学习、神经网络、深度学习等方面,都是主流的编程语言。
可以这么说,基于大数据分析和深度学习发展而来的人工智能,其本质上已经无法离开 Python 的支持了,原因至少有以下几点:
- 目前世界上优秀的人工智能学习框架,比如 Google 的 TransorFlow(神经网络框架)、FaceBook 的 PyTorch(神经网络框架)以及开源社区的 Karas 神经网络库等,都是用 Python 实现的;
- 微软的 CNTK(认知工具包)也完全支持 Python,并且该公司开发的 VS Code,也已经把 Python 作为第一级语言进行支持。
- Python 擅长进行科学计算和数据分析,支持各种数学运算,可以绘制出更高质量的 2D 和 3D 图像。
总之,AI 时代的来临,使得 Python 从众多编程语言中脱颖而出,Python 作为 AI 时代头牌语言的位置,基本无人可撼动!
这一领域不适合初学者研究,在此不做学习重点阐述。
6 网络爬虫
能够编写网络爬虫的编程语言有很多,但是 Python 语言很早就用来编写网络爬虫,并且绝对是主流语言之一,例如 Python 提供有很多服务于编写网络爬虫的工具,像 urllib、Selenium 和 BeautifulSoup 等,还提供了一个网络爬虫框架 Scrapy就应用非常广泛。
网络爬虫也称为网络蜘蛛,是大数据行业获取数据的核心工具。假如没有网络爬虫自动的、不分昼夜的、高智能化的在互联网上爬取免费的数据,那些大数据相关的公司恐怕要少四分之三。
学习重点
Scrapy
Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
7 科学计算和数据分析
随着 Python 在数据分析、可视化方面众多程序库的开发和完善,Python 越来越适合用于科学计算、绘制高质量的2D图像、3D图像。例如 NumPy、SciPy、Matplotlib、pandas 等,可以满足 Python 程序员编写科学计算程序。
学习重点
SciPy
Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
NumPy
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
Matplotlib
Matplotlib 是一个 Python的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
Pandas
pandas 是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
Ipython
IPython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。
IPython 是基于BSD 开源的。
8 游戏开发
很多游戏使用 C++编写图形显示等高性能模块,而使用 Python 或 Lua 编写游戏的逻辑。和 Python 相比,Lua 的功能更简单,体积更小;而 Python 则支持更多的特性和数据类型。
例如,Sid Meier‘s Civilization(文明游戏,如下图所示)就是使用 Python 实现的。
除此之外,Python 可以直接调用 Open GL 实现 3D 绘制,这是高性能游戏引擎的技术基础。事实上,有很多 Python 语言实现的游戏引擎,例如 Pygame、Pyglet 以及 Cocos 2d 等。
如果对游戏开发感兴趣,可以研究一下这些游戏引擎。