WHY PYTHON!
目录
历史—-计算机的发展阶段
- 1946年 计算机诞生
1946-1981 :计算机系统结构时代,不同类型计算机&系统结构,解决计算能力问题 - 1981年 PC诞生
1981-2008 :网络&视窗时代,互联网&视窗操作系统,解决人与计算机&计算机间交互问题 - 2008年 Android操作系统诞生
2008-2016 :复杂信息系统时代,解决数据问题 - 2016年 计算机打败世界围棋冠军
2017-未来 :人工智能时代,解决人类问题
未来->大量计算需求
编程语言概览
世界上存在着超过600多种编程语言,代表性语言如下:
语言 | 关注点 | 本质 | 解决问题 |
---|---|---|---|
C语言 | 指针、内存、数据类型 | 理解计算机系统结构 | 性能、写操作系统 |
JAVA | 面向对象、跨平台、运行时 | 理解主客体关系 | 跨平台和程序类交互问题 |
C++ | 对象、多态、继承 | 理解主客体关系 | 大规模程序、大规模图像处理 |
VB | 对象、控件 | 理解人机交互逻辑 | 桌面应用 |
pyhton | 编程逻辑、第三方库 | 理解问题求解 | 各类问题 |
未来计算环境:计算机性能不再是解决一般问题的瓶颈,移动互广泛普及,大数据、云计算、物联网、信息安全、人工智能需求爆发,日益增长的计算需求,选择python!
python特点
通用、简洁、生态
- 通用语言
- 脚本语言
- 开源
- 跨平台
多模型语言
语法简洁:代码量是C的10%,强制可读性,较少的底层语法元素,支持多种编程方式,支持中文字符;
- 生态高产:拥有快速增长的计算生态,超过13W的第三方库,避免重复造轮子,代码开方共享,且可跨操作系统平台。
python是最高产的程序设计语言!
机器语言:二进制文件 代码直接执行
↓
汇编语言:有助记符,需要汇编器
↓
高级语言:接近自然语言,需要编译器
↓
超级语言:python,粘性整合已有程序,具备庞大的计算生态
what can we do with python?
使用python我可以做什么?什么都可以!从数据处理到人工智能、从web解析到网络空间、从人机交互到艺术设计,三大方向,都有好用的第三方库支持!
1.从数据处理到人工智能
从数据处理到人工智能大致分为以下步骤:
- 数据表示:采用合适的方式用程序表达数据源
- 数据清洗:数据归一化、数据转换、异常值处理
- 数据统计:数据的概要理解,数量、分布、中位数等
- 数据可视化:直观展示数据内涵的方式
- 数据挖掘:从数据分析获得知识,生产数据外的价值
- 人工智能:数据/语言/图像/视觉等方面深度分析与决策
以上六步骤涉及的主要技术点有:数据分析、数据可视化、文本处理、机器学习
python针对各项技术都有优秀的第三方库可直接使用,如下:
数据分析:
Numpy:表达N维数组的最基础库。
使用C语言实现,计算速度快,是python数据分析及科学计算的基础库,支撑Pandas等库;直接提供矩阵运算、广播函数、线性代数等功能。Pandas:python数据分析高层次应用库。
提供简单易用的数据结构和数据分析工具;理解数据类型与缩影的关系,操作索引即操作数据;是python最主要的数据分析功能库,基于Numpy开发。SciPy:数学、科学和工程计算功能库
提供了一批数学算法及工程数据运算功能;类似Matlab,可用于如傅里叶变换、信号处理等应用;是Python最主要的科学计算功能库,基于Numpy开发。数据可视化:
Matplotlib:高质量的二维数据可视化功能库
提供了超过100种数据可视化展示效果;通过matplotlib.pyplot子库调用各可视化效果;是python最主要的数据可视化功能库,基于Numpy开发。Seaborn:统计类数据可视化功能库
提高了一批高层次的统计类数据可视化展示效果;主要展示数据间分布、分类和线性关系等内容;基于Matplotlib开发,支持Numpy和Pandas。Mayavi:三维科学数据可视化功能库
提供了一批简单易用的3D科学计算数据可视化展示效果;目前(Mayavi2)是三维可视化最主要的第三方库;支持Numpy、TVTK、Traits、Envisage等第三方库。文本处理:
PyPDF2:用来处理PDF文件的工具集
提供了一批处理PDF文件的计算功能;支持获取信息、分割、整合文件、加密接口等;完全Python语言实现,不需要依赖其他第三方库,功能稳定。NLTK:自然语言文本处理第三方库
提高了一批简单易用的自然语言文本处理功能;支持语言文本分类、标记、语法句法、语义分析等;是最优秀的python自然语言处理库。Python-docx:创建或更新MicrosoftWord文件的第三方库
提供创建或更新.doc .docx等文件的计算功能;增加并配置段落、图片、表格、文字等,功能全面。机器学习:
Scikit-learn:机器学习方法工具集
提供一批统一化的机器学习方法功能接口;提供聚类、分类、回归、强化学习等计算功能;是机器学习最基本且最优秀的python第三方库。TensorFlow:AlphaGo背后的机器学习计算框架
谷歌公司推动的开源机器学习框架;将数据流作为基础,图解点代表运算,边代表张量;是应用机器学习方法的一种方式,支撑谷歌人工智能应用。MXXNet:基于神经网络的深度学习计算框架
提供可扩展的神经网络及深度学习计算功能;可用于自动驾驶、机器翻译、语音识别等众多领域;是python最重要的深度学习计算框架。
小结:
从数据处理到人工智能可能用到的第三方库如下,要想实现本路线功能,每一类至少需熟练掌握一个第三方库:
- 数据分析:Numpy、Pandas、SciPy
- 数据可视化:Matplotlib、Seaborn、Mayavi
- 文本处理:PyPDF2、NLTK、python-doc
- 机器学习:Scikit-learn、TensorFlow、MXNet
2.从WEB网页到网络空间
网络爬虫
Requests:最友好的网络爬虫功能库
提供了简单易用的类HTTP协议网络爬虫功能;支持连接池、SSL、Cookies、HTTP(S)代理等;是python最主要的页面级网络爬虫功能库。Scrapy:python数据分析高层次应用库
提供了构建网络爬虫系统的框架功能,功能半成品;支持批量和定时网页爬取、提供数据处理流程等;是python最主要且最专业的网络爬虫框架。pyspider:强大的web页面爬取系统
提供了完整的网页爬取系统构建功能;支持数据库后端、消息队列、优先级、分布式架构等;python重要的网络爬虫类第三方库。web信息提取
Beautiful Soup:HTML和XML的解析库
提供了解析HTML和XML等web信息的功能;又名beautifulsoup4或bs4,可以加载多种解析引擎;常与网络爬虫库搭配使用,如Scrapy、requests等。Re:正则表达式解析和处理功能库
提供了定义和解析正则表达式的一批通用功能;可用于各类场景,包括定点的web信息提取;是python最主要的标准库之一,无需安装。Python-Goose:提取文章类型web页面的功能库
提供了对web页面中文章信息、视屏等元数据的提取功能;针对特定类型web页面,应用覆盖面较广;是python最主要的web信息web网站开发
Django:最流行的web应用框架
提供了构建web系统的基本应用框架;MTV模式:模型(model)+模板(template)+视图(views);是python最主要的web应用框架,略微复杂的应用框架。Pyramid:规模适中的web应用框架
提供了简单方便构建web系统的应用框架;不大不小,规模适中,适合快速构建并适度扩展类应用;是python产品级web应用框架,起步简单扩展性好。Flask:web应用开发微框架
提供了最简单构建web系统的应用框架;特点是简单、规模小、快速;体积:Django > Pyramid > Flask.WeRobot:微信公众号开发框架
提供了解析微信服务器消息及反馈消息的功能;建立微信机器人的重要技术手段。网络应用开发
aip:百度AI开放平台接口
提供了访问百度AI服务的python功能接口;语音、人脸、OCR、NLP、知识图谱、图像搜索等领域;python百度AI应用的最主要方式。MyQR:二维码生成第三方库
提供了生成二维码的系列功能;基本二维码、艺术二维码和动态二维码。
小结:
- 网络爬虫:Requests、Scrapy、pyspider;
- web信息提取:Beautiful Soup、Re、Python-Goose;
- web网站开发:Django、Pyramid、Flask;
- 网络应用开发:WeRobot、aip、MyQR;
3.从人机交互到艺术设计
图形用户界面
PyQt5:Qt开发框架的python接口
提供; 创建Qt5程序的python API接口;Qt是非常成熟的跨平台桌面应用开发系统,完备GUI;推荐的python GUI开发第三方库。wxPython:跨平台GUI开发框架
提供了专用于python的跨平台GUI开发框架;理解数据类型与索引的关系,操作索引即操作数据;python最主要的数据分析功能库,基于Numpy开发。PyGObject:使用GTK+开发GUI的功能库
提供了整合GTK+、WebKitGTK+等库的功能;GTK+:跨平台的一种用户图形界面GUI框架;实例:Anaconda采用该库构建GUI。游戏开发
PyGame:简单的游戏开发功能库
提供了基于SDL的简单游戏开发功能及实现引擎;理解游戏对外部输入的响应机制及角色构建和交互机制;python游戏入门最主要的第三方库。Panda3D:开源、跨平台的3D渲染和游戏开发库
一个3D游戏引擎,提供python和C++两种接口;支持很多先进特性:法线贴图、光泽贴图、卡通渲染等;由迪士尼和卡尼基梅隆大学共同开发。cocos2d:构建2D游戏和图形界面交互式应用的框架
虚拟现实
VR Zer:在树莓派上开发VR应用的python库
提供大量与VR开发相关的功能;针对树莓派的VR开发库,支持设备小型化,配置简单化;非常适合初学者实践VR开发及应用。pyovr:Oculus Rift的python开发接口
针对Oculus VR设备的python开发库;基于成熟的VR设备,提供全套文档,工业级应用设备;python+虚拟现实领域探索的一种思路。Vizard:基于python的通用VR开发引擎
专业的企业级虚拟现实开发引擎;提供详细的官方文档;支持多种主流的VR硬件设备,具有一定通用性。图形艺术
Quads:迭代的艺术
对图片进行四分迭代,形成像素风;可以生成动图或静图图像;简单易用,具有很高展示度。ascii_art:ASCII艺术库
将普通图片转为ASCII艺术风格;输出可以是纯文本或彩色文本;可采用图片格式输出。turtle:海龟绘图体系
简单!
小结:
- 图像用户界面:PyQt5、wxPython、PyGObject
- 游戏开发:PyGame、Panda3D、cocos2d
- 虚拟现实:VR Zer、pyovr、Vizard
- 图形艺术:Quads、ascii_art、turtle
更多第三方库,去awesome-python.com中去查。