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 的支持了,原因至少有以下几点:

  1. 目前世界上优秀的人工智能学习框架,比如 Google 的 TransorFlow(神经网络框架)、FaceBook 的 PyTorch(神经网络框架)以及开源社区的 Karas 神经网络库等,都是用 Python 实现的;
  2. 微软的 CNTK(认知工具包)也完全支持 Python,并且该公司开发的 VS Code,也已经把 Python 作为第一级语言进行支持。
  3. 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 等。

如果对游戏开发感兴趣,可以研究一下这些游戏引擎。

原文地址:https://www.cnblogs.com/manongajie/p/12641858.html

时间: 2024-10-10 15:09:06

Python 应用领域及学习重点的相关文章

pyqt QTableWidget例子学习(重点)

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.QtGui import * from PyQt4.Qt import * from PyQt4.QtCore import * lista = ['aa', 'ab', 'ac'] listb = ['ba', 'bb', 'bc'] listc = ['ca', 'cb', 'cc'] mystruct = {'A':lista, 'B':

python 零基础学习大纲 - 【整理】

[整理]url:https://zhuanlan.zhihu.com/p/101953135 Python基本概念最全图1.Python 解释器: 2.Python数据结构: 3.变量与运算符: 4.Python 流程控制: 5.Python 文件处理: 6.Python 输入输出: 7.Python 异常: 8.Python 函数和模块: 9.Python 面相对象: 10.Python 多线程: 11.Python 标准库: 12.Python 第三方库: 一开始学习知识的时候,我们对基本概

【python标准库学习】thread,threading(二)多线程同步

继上一篇介绍了python的多线程和基本用法.也说到了python中多线程中的同步锁,这篇就来看看python中的多线程同步问题. 有时候很多个线程同时对一个资源进行修改,这个时候就容易发生错误,看看这个最简单的程序: import thread, time count = 0 def addCount(): global count for i in range(100000): count += 1 for i in range(10): thread.start_new_thread(ad

【python标准库学习】thread,threading(一)多线程的介绍和使用

在单个程序中我们经常用多线程来处理不同的工作,尤其是有的工作需要等,那么我们会新建一个线程去等然后执行某些操作,当做完事后线程退出被回收.当一个程序运行时,就会有一个进程被系统所创建,同时也会有一个线程运行,这个线程就是主线程main,在主线程中所创建的新的线程都是子线程,子线程通常都是做一些辅助的事.python中提供了thread和threading两个模块来支持多线程. python中使用线程有两种方式,第一种是用thread模块的start_new_thread函数,另一种是用threa

python第三方库学习之xlrd读取Excel文件

因为经常会涉及到从Excel表中导数据,所以就学习了python的xlrd来读取excel中的数据. 1.xlrd的安装 xlrd是python的第三方库,所以是需要自己安装的,可以在python的官网http://pypi.python.org/pypi/xlrd下载该模块来安装,也可以通过其他手段,比如easy_install或者pip啥的,我已经安装好pip所以就用最懒的方式来安装了pip install xlrd来安装. 2.分析excel文件的层级对象 要读取excel的数据,就要了解

《灰帽Python-黑客和逆向工程师的Python编程》学习记录

ctypes是Python语言的一个外部库,提供和C语言兼容的数据类型,可以很方便的调用C DLL中的函数. 操作环境:CentOS6.5 Python版本:2.66 ctypes是强大的,强大到本书以后介绍的几乎所有库都要基于此.使用它我们就能够调用动态链接库中函数,同时创建各种复杂的C数据类型和底层操作函数.毫无疑问,ctypes就是本书的基础. 第一章 搭建开发环境 1.3.2 使用动态链接库 from ctypes import * libc = CDLL("libc.so.6"

python源码学习(一)——python的总体架构

python源码学习(一)——python的总体架构 学习环境: 系统:ubuntu 12.04 STLpython版本:2.7既然要学习python的源码,首先我们要在电脑上安装python并且下载python的源码,ubuntu 12.04 STL自带的python版本为2.7.3,这就可以了,接下来下载源码,下载python2.7.7的源代码,下载结束后解压文件,我们会看到如下文件结构:,接下来介绍一下,demo文件夹里放的是一些例子:Doc文件夹里放的是文档,Grammer是语法分析器,

Python结合OpenCV学习资料

原文地址:http://leihuang.net/2014/05/19/List-Interviews/ 单链表的一些常见面试题汇总 单链表反转/逆序 求单链表倒数第N个数 找到单链表的中间结点 如何判断链表是否有环的存在 单链表建环,无环链表变有环 如何知道环的长度? 如何找出环的连接点在哪里? 删除单链表中的重复元素 下面我先简单叙述一下每道题的思路,然后把实现的程序一起贴出来,不会讲得太细,我觉得只要有了思路之后,接下来的难点就是语言上的一些细节问题了,这个不自己去实现,听别人讲是体会不到

Python应用领域

Python应用领域 Web开发.数据库编程.桌面GUI应用开发.科学与数值计算.教育教学.网络应用开发.软件开发(控制.管理.测试等).游戏与3D影像:游戏开发.网站建设.机器人和航天飞机控制等领域,Python几乎可以用在任何场合.