Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。
像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。
Python 2.7 被确定为最后一个 Python 2.x 版本,目前Python版本为 3.8+。
CPython是Python的官方版本,使用C语言实现,使用最为广泛。CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
PyPy:Python的Python实现版本,原理是这样的,PyPy运行在CPython(或者其它实现)之上,用户程序运行在PyPy之上。
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:Python代码定义的更清晰。
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.数据库:Python提供所有主要的商业数据库的接口。
9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
Python超越Java,成为最受欢迎的语言的原因:
1、Python最适用人工智能和大数据的语言,在这个以人工智为趋势的时代,python可以说是掌握了绝对的优势。
2、Python拥有着许多优质的文档和丰富的库,对于科学用途的广泛编程任务都是非常用用的。
3、Python本身,快速、坚固、可移植、可扩展。
4、开源,而且拥有一个健康、活泼且支持度高的社区。
Python主要有以下五大主要应用:
Python的诞生历史比Web还要早,由于Python是一种解释型的脚本语言,开发效率高,所以非常适合用来做Web开发。
Python有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快。
常用的web开发框架有:Django、Flask、Tornado 等。
许多知名的互联网企业将python作为主要开发语言:豆瓣、知乎、果壳网、Google、NASA、YouTube、Facebook……
由于后台服务器的通用性,除了狭义的网站之外,很多App和游戏的服务器端也同样用 Python实现。
许多人对编程的热情始于好奇,终于停滞。
距离真枪实干做开发有技术差距,也无人指点提带,也不知当下水平能干嘛?就在这样的疑惑循环中,编程技能止步不前,而爬虫是最好的进阶方向之一。
网络爬虫是Python比较常用的一个场景,国际上,google在早期大量地使用Python语言作为网络爬虫的基础,带动了整个Python语言的应用发展。以前国内很多人用采集器搜刮网上的内容,现在用Python收集网上的信息比以前容易很多了,如:
从各大网站爬取商品折扣信息,比较获取最优选择;
对社交网络上发言进行收集分类,生成情绪地图,分析语言习惯;
爬取网易云音乐某一类歌曲的所有评论,生成词云;
按条件筛选获得豆瓣的电影书籍信息并生成表格……
应用实在太多,几乎每个人学习爬虫之后都能够通过爬虫去做一些好玩有趣有用的事。
python爬虫主要模块有:urllib、requests、scrapy、selenium、beautifulSoup
通用
urllib -网络库(stdlib)。
requests -网络库。
grab – 网络库(基于pycurl)。
pycurl – 网络库(绑定libcurl)。
urllib3 – Python HTTP库,安全连接池、支持文件post、可用性高。
httplib2 – 网络库。
RoboBrowser – 一个简单的、极具Python风格的Python库,无需独立的浏览器即可浏览网页。
MechanicalSoup -一个与网站自动交互Python库。
mechanize -有状态、可编程的Web浏览库。
socket – 底层网络接口(stdlib)。
Unirest for Python – Unirest是一套可用于多种语言的轻量级的HTTP库。
hyper – Python的HTTP/2客户端。
PySocks – SocksiPy更新并积极维护的版本,包括错误修复和一些其他的特征。作为socket模块的直接替换。
功能齐全的爬虫
grab – 网络爬虫框架(基于pycurl/multicur)。
scrapy – 网络爬虫框架(基于twisted),不支持Python3。
pyspider – 一个强大的爬虫系统。
cola – 一个分布式爬虫框架。
其他
portia – 基于Scrapy的可视化爬虫。
restkit – Python的HTTP资源工具包。它可以让你轻松地访问HTTP资源,并围绕它建立的对象。
demiurge – 基于PyQuery的爬虫微框架。
通用
lxml – C语言编写高效HTML/ XML处理库。支持XPath。
cssselect – 解析DOM树和CSS选择器。
pyquery – 解析DOM树和jQuery选择器。
BeautifulSoup – 低效HTML/ XML处理库,纯Python实现。
html5lib – 根据WHATWG规范生成HTML/ XML文档的DOM。该规范被用在现在所有的浏览器上。
feedparser – 解析RSS/ATOM feeds。
MarkupSafe – 为XML/HTML/XHTML提供了安全转义的字符串。
xmltodict – 一个可以让你在处理XML时感觉像在处理JSON一样的Python模块。
xhtml2pdf – 将HTML/CSS转换为PDF。
untangle – 轻松实现将XML文件转换为Python对象。
用于解析和操作简单文本的库。
通用
difflib – (Python标准库)帮助进行差异化比较。
Levenshtein – 快速计算Levenshtein距离和字符串相似度。
fuzzywuzzy – 模糊字符串匹配。
esmre – 正则表达式加速器。
ftfy – 自动整理Unicode文本,减少碎片化。
转换
unidecode – 将Unicode文本转为ASCII。
字符编码
uniout – 打印可读字符,而不是被转义的字符串。
chardet – 兼容 Python的2/3的字符编码器。
xpinyin – 一个将中国汉字转为拼音的库。
pangu.py – 格式化文本中CJK和字母数字的间距。
Slug化
awesome-slugify – 一个可以保留unicode的Python slugify库。
python-slugify – 一个可以将Unicode转为ASCII的Python slugify库。
unicode-slugify – 一个可以将生成Unicode slugs的工具。
pytils – 处理俄语字符串的简单工具(包括pytils.translit.slugify)。
通用解析器
PLY – lex和yacc解析工具的Python实现。
pyparsing – 一个通用框架的生成语法分析器。
人的名字
python-nameparser -解析人的名字的组件。
电话号码
phonenumbers -解析,格式化,存储和验证国际电话号码。
用户代理字符串
python-user-agents – 浏览器用户代理的解析器。
HTTP Agent Parser – Python的HTTP代理分析器。
解析和处理特定文本格式的库。
通用
tablib – 一个把数据导出为XLS、CSV、JSON、YAML等格式的模块。
textract – 从各种文件中提取文本,比如 Word、PowerPoint、PDF等。
messytables – 解析混乱的表格数据的工具。
rows – 一个常用数据接口,支持的格式很多(目前支持CSV,HTML,XLS,TXT – 将来还会提供更多!)。
Office
python-docx – 读取,查询和修改的Microsoft Word2007/2008的docx文件。
xlwt / xlrd – 从Excel文件读取写入数据和格式信息。
XlsxWriter – 一个创建Excel.xlsx文件的Python模块。
xlwings – 一个BSD许可的库,可以很容易地在Excel中调用Python,反之亦然。
openpyxl – 一个用于读取和写入的Excel2010 XLSX/ XLSM/ xltx/ XLTM文件的库。
Marmir – 提取Python数据结构并将其转换为电子表格。
PDFMiner – 一个从PDF文档中提取信息的工具。
PyPDF2 – 一个能够分割、合并和转换PDF页面的库。
ReportLab – 允许快速创建丰富的PDF文档。
pdftables – 直接从PDF文件中提取表格。
Markdown
Python-Markdown – 一个用Python实现的John Gruber的Markdown。
Mistune – 速度最快,功能全面的Markdown纯Python解析器。
markdown2 – 一个完全用Python实现的快速的Markdown。
YAML
PyYAML – 一个Python的YAML解析器。
CSS
cssutils – 一个Python的CSS库。
ATOM/RSS
feedparser – 通用的feed解析器。
SQL
sqlparse – 一个非验证的SQL语句分析器。
HTTP
HTTP
http-parser – C语言实现的HTTP请求/响应消息解析器。
微格式
opengraph – 一个用来解析Open Graph协议标签的Python模块。
可移植的执行体
pefile – 一个多平台的用于解析和处理可移植执行体(即PE)文件的模块。
PSD
psd-tools – 将Adobe Photoshop PSD(即PE)文件读取到Python数据结构。
处理人类语言问题的库。
NLTK -编写Python程序来处理人类语言数据的最好平台。
Pattern – Python的网络挖掘模块。他有自然语言处理工具,机器学习以及其它。
TextBlob – 为深入自然语言处理任务提供了一致的API。是基于NLTK以及Pattern的巨人之肩上发展的。
jieba – 中文分词工具。
SnowNLP – 中文文本处理库。
loso – 另一个中文分词库。
genius – 基于条件随机域的中文分词。
langid.py – 独立的语言识别系统。
Korean – 一个韩文形态库。
pymorphy2 – 俄语形态分析器(词性标注+词形变化引擎)。
PyPLN – 用Python编写的分布式自然语言处理通道。这个项目的目标是创建一种简单的方法使用NLTK通过网络接口处理大语言库。
selenium – 自动化真正的浏览器(Chrome浏览器,火狐浏览器,Opera浏览器,IE浏览器)。
Ghost.py – 对PyQt的webkit的封装(需要PyQT)。
Spynner – 对PyQt的webkit的封装(需要PyQT)。
Splinter – 通用API浏览器模拟器(selenium web驱动,Django客户端,Zope)。
解析/修改网址和网络地址库。
URL
furl – 一个小的Python库,使得操纵URL简单化。
purl – 一个简单的不可改变的URL以及一个干净的用于调试和操作的API。
urllib.parse – 用于打破统一资源定位器(URL)的字符串在组件(寻址方案,网络位置,路径等)之间的隔断,为了结合组件到一个URL字符串,并将“相对URL”转化为一个绝对URL,称之为“基本URL”。
tldextract – 从URL的注册域和子域中准确分离TLD,使用公共后缀列表。
网络地址
netaddr – 用于显示和操纵网络地址的Python库。
人工智能是现在非常火的一个方向,AI热潮让Python语言的未来充满了无限的潜力。现在释放出来的几个非常有影响力的AI框架,大多是Python的实现,为什么呢?
因为Python有很多库很方便做人工智能,比如numpy, scipy做数值计算的,sklearn做机器学习的,pybrain做神经网络的,matplotlib将数据可视化的。在人工智能大范畴领域内的数据挖掘、机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。
人工智能的核心算法大部分还是依赖于C/C++的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C++能做到。
而Python是这些库的API binding,使用Python是因为CPython的胶水语言特性,要开发一个其他语言到C/C++的跨语言接口,Python是最容易的,比其他语言的门槛要低不少,尤其是使用Cython的时候。
人工智能包含常用机器学习和深度学习两个很重要的模块,而下图中Python拥有matplotlib、Numpy、sklearn、keras等大量的库,像pandas、sklearn、matplotlib这些库都是做数据处理、数据分析、数据建模和绘图的库,基本上机器学习中对数据的爬取(scrapy)、对数据的处理和分析(pandas)、对数据的绘图(matplotlib)和对数据的建模(sklearn)在Python中全都能找到对应的库来进行处理。
将Python用于机器学习,有一些热门的机器学习库和Python框架。其中两个最热门的是scikit-learn和TensorFlow。
数据分析处理方面,Python有很完备的生态环境。“大数据”分析中涉及到的分布式计算、数据可视化、数据库操作等,Python中都有成熟的模块可以选择完成其功能。对于Hadoop-MapReduce和Spark,都可以直接使用Python完成计算逻辑,这无论对于数据科学家还是对于数据工程师而言都是十分便利的。
Python 本身的数据分析功能不强,需要安装一些第三方扩展库来增强它的能力。常用 的库有Numpy 、Scipy 、Matplotlib 、Pandas 、Scikit-Learn 、Keras 和Gensim 等,下面将对这些库的安装和使用进行简单的介绍。如果你安装的是Anaconda 发行版,那么它已经自带了以下库: Numpy 、Scipy 、Matplotlib、Pandas 和Scikit-Leam。
Python对于服务器运维而言也有十分重要的用途。由于目前几乎所有Linux发行版中都自带了Python解释器,使用Python脚本进行批量化的文件部署和运行调整都成了Linux服务器上很不错的选择。Python中也包含许多方便的工具,从调控ssh/sftp用的paramiko,到监控服务用的supervisor,再到bazel等构建工具,甚至conan等用于C++的包管理工具,Python提供了全方位的工具集合,而在这基础上,结合Web,开发方便运维的工具会变得十分简单。
系统编程: 提供API,能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。
图形处理: 有PIL、Tkinter等图形库支持,能方便进行图形处理。
数学处理: NumPy扩展提供大量与许多标准数学库的接口。
文本处理: Python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用Python进行XML程序的开发。
数据库编程: 程序员可通过遵循PythonDB-API(数据库应用程序编程接口)规范的模块与MicrosoftSQLServer,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。Python自带有一个Gadfly模块,提供了一个完整的SQL环境。
网络编程: 提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet及BitTorrent.Google都在广泛地使用它。
Web编程: 应用的开发语言,支持最新的XML技术。
多媒体应用: Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。
黑客编程: Python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。