python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 23925|回复: 0

Python - 类库丰富 面向对象解释型脚本 AI 编程语言

[复制链接]

185

主题

204

帖子

1175

积分

工程师

Rank: 5Rank: 5

金钱
759
金币
15
威望
0
贡献
0
发表于 2018-5-21 17:52:00 | 显示全部楼层 |阅读模式
AI人工智能 语音助理 人工翻译 教程
Python - 类库丰富 面向对象解释型脚本 AI 编程语言


Python ([ˈpaɪθən]) 是一种面向对象、解释型计算机程序设计语言。Python 语法简洁、清晰,具有丰富且强大的类库。因此,Python 也是当下 "AI 人工智能" 最流行的开发语言。


Python 源代码遵循 GPL (GNU General Public License) 协议,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。


Python 常被称为胶水语言,能把用其他语言编写的各模块  (尤其是 C/C++) 轻松地联结在一起。常见情形是,用 Python 快速生成程序原型 (有时甚至是程序最终界面),然后对其中有特别要求的部分,用更合适的语言改写;譬如:3D 游戏中的图形渲染模块,性能要求特别高,就可用 C/C++ 重写,而后封装为 Python 可调用的扩展类库。需要注意的是,在使用扩展类库时可能需要考虑平台问题,某些扩展类库可能不提供跨平台实现。


快速高效 智能编辑 重构 批处理 "数字化 Python IDE" 集成开发环境

http://idepy.digitser.cn/


从20世纪90年代初诞生至今,Python逐渐被广泛应用于处理系统管理任务和Web编程


设计者开发Python时总的指导思想是:对于一个特定问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的Python格言(称为The Zen of Python)里面表述为:There should be one--and preferably only one--obvious way to do it.


这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。


Python作者有意设计,限制性很强的语法,使不好的编程习惯(譬如:if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。


和其他大多数语言(譬如:C)的一个区别是,一个模块的界限,完全是由每行的首字符在这一行的位置决定的;而C语言是用一对花括号{}明确定出模块边界,与字符的位置毫无关系。


这一点曾引起过争议。因为,从C这类的语言诞生后,语言的语法含义与字符的排列方式就分离开来,曾被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等,所有需要使用模块的地方),Python确实使得程序更加清晰和美观。



Python社区提供了大量第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而稳定。第三方模块可以使用Python或C语言编写


SWIG,SIP常用于将C语言编写的程序库,转化为Python模块。Boost C++ Libraries包含了一组库,Boost.Python使得以Python或C++编写的程序能互相调用。借助于拥有基于标准库的大量工具、能够使用低级语言如C和可作为其他库接口的C++,Python已成为一种强大的应用于其他语言与工具之间的胶水语言。


1989年圣诞节期间,在阿姆斯特丹,Guido van Rossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序名,是因他是一个叫Monty Python的喜剧团体的爱好者。


ABC是Guido van Rossum参加设计的一种教学语言。就Guido van Rossum本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但ABC语言并没有成功,究其原因,Guido van Rossum认为是不开放造成的。Guido van Rossum决定在Python中避免这一问题。同时,他还想实现在ABC中闪现过,但未曾实现的东西。


就这样,Python在Guido van Rossum手中诞生了。可以说,Python是从ABC发展起来的,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响,并且结合了Unix shell和C的习惯。


Python已成为最受欢迎的程序设计语言之一。2011年1月,Python被TIOBE编程语言排行榜评为2010年度语言。2004年后,python语文的使用率是呈线性增长的。


Ashampoo_Snap_2015.08.07_00h36m50s_001_.jpg

由于Python语言的简洁、易读及可扩展性,国外用Python做科学计算的研究机构正日益增多,一些知名大学已采用Python教授程序设计课程。譬如:卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。


众多开源科学计算软件包都提供了Python调用接口,譬如:著名计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,譬如:以下3个十分经典的科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算及绘图功能。因此,Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。


说起科学计算,首先会被提到的可能是MATLAB。然而,除MATLAB一些专业性很强的工具箱还无法替代之外,MATLAB的大部分常用功能都可在Python社区中找到相应扩展库。


和MATLAB相比,用Python做科学计算有如下优点:


01、MATLAB是一款商用软件,且价格不菲

Python完全免费,众多开源的科学计算库都提供了Python调用接口。用户可在任何计算机上免费安装Python及其绝大多数扩展库。


02、与MATLAB相比,Python是一门更易学、更严谨的程序设计语言

Python可让用户编写出更易读、易维护的代码。


03、MATLAB主要专注于工程和科学计算

即使在计算领域,也常会遇到文件管理、界面设计、网络通信等各种需求。而Python有着丰富的扩展库,可轻松完成各种高级任务,开发者可用Python实现完整应用程序所需的各种功能。


01223653-4dc9cc1ab54543149382a94a2485ecdf.png

解释器

Python 是一门跨平台的脚本语言,Python 只规定了一种语法规则。若采用不同编程语言实现 Python 语法并解释程序,就成了一种不同的 Python 解释器。


不管采用哪种编程语言实现 Python 解释器,在编写 Python 应用时的代码规范及语法规则是不变的,变化的只是底层解释器实现,即 "运行时" 的方式。


Python 解释器实现
实现
底层语言
备注
CPythonCClassic Python,也是原始 Python实现,当需区别于其他实现时,才以 CPython 称呼;或称作 C语言实现的 Python。这是最常用的 Python 版本。
JythonJavaJava 语言实现的 Python。Jython 可直接调用 Java 函数库。
PyPyPython用 Python 语言写的 Python 实现。
IronPython.NET面向 .NET 和 ECMA CLI 的 Python 实现。IronPython 能直接调用 .NET 平台函数库,可将 Python 应用编译成 .NET 程序。
ZhPy
又名周蟒,支持使用 "繁/简中文" 语句编写应用的 Python 实现。

1533440.jpg

设计哲学

01、Python的设计哲学是“优雅”、“明确”、“简单”。

因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。


在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。


由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能支撑大规模的软件开发。这些准则被称为Python格言。


在Python解释器内,运行import this可获得完整设计哲学列表。


  1. import this
  2. The Zen of Python, by Tim Peters

  3. Beautiful is better than ugly.
  4. Explicit is better than implicit.
  5. Simple is better than complex.
  6. Complex is better than complicated.
  7. Flat is better than nested.
  8. Sparse is better than dense.
  9. Readability counts.
  10. Special cases aren't special enough to break the rules.
  11. Although practicality beats purity.
  12. Errors should never pass silently.
  13. Unless explicitly silenced.
  14. In the face of ambiguity, refuse the temptation to guess.
  15. There should be one-- and preferably only one --obvious way to do it.
  16. Although that way may not be obvious at first unless you're Dutch.
  17. Now is better than never.
  18. Although never is often better than *right* now.
  19. If the implementation is hard to explain, it's a bad idea.
  20. If the implementation is easy to explain, it may be a good idea.
  21. Namespaces are one honking great idea -- let's do more of those!
复制代码

02、Python开发人员会尽量避开不成熟或不重要的优化

一些针对非重要部位的加快运行速度的补丁,通常不会被合并到Python内。因此,很多人认为Python很慢。


不过,根据二八定律,大多数程序对速度要求并不高。在某些对运行速度要求很高的情况,Python设计师可倾向于使用JIT技术,或使用C/C++语言改写这部分程序。可用的JIT技术是PyPy


03、Python是完全面向对象的编程语言

函数、模块、数字、字符串都是对象。并完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统函数式编程语言,Python对函数式设计只提供了有限的支持。Python 有两个标准库(functools, itertools),提供了Haskell和Standard ML中久经考验的函数式程序设计工具。


04、Python可能被粗略地分类为“脚本语言”(script language)

但实际上,一些大规模软件开发计划,譬如:Zope、Mnet及BitTorrent,Google也在广泛使用它。


Python支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。


05、Python本身被设计为可扩充

并非所有特性和功能,都集成于语言核心。Python提供了丰富的API和工具,以便程序员轻松以C语言、C++、Cython编写扩充模块。


Python编译器本身也可被集成到其它需要脚本语言的程序中。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。


在Google内部的很多项目,譬如:Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。


《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过,2004年,Python已在Google内部使用,Google召募许多Python高手,但在这之前就已决定使用Python,他们的目的是:Python where we can, C++ where we must,在操控硬件的场合使用C++,在快速开发时候使用Python。”


基本语法

Python的设计目标之一是让代码具备高度的可阅读性。设计时,尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言,如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和惊喜。


01、缩进

Python开发者有意让违反了缩进规则的程序不能通过编译,以此强制程序员养成良好的编程习惯。


并且,Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。


譬如,python 3.0 的 for 语句:

  1. for html_row in html:
  2.         count = count + 1
  3.         print(count, html_row.replace(b"\xc2\xa9", b" ").decode("UTF-8")) #将 b"\xc2\xa9" 版权字符替换成空格,以免无法解码
  4.    
  5. print(req.headers.get('User-agent'))
复制代码

根据PEP规定,必须使用4个空格来表示每级缩进(不清楚4个空格的规定如何,在实际编写中可以自定义空格数,但是要满足每级缩进间空格数相等)。使用Tab字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。


02、控制语句

#
语句
作用
备注
01if
当条件成立时运行语句块。 常与else, elif(相当于else if) 配合使用。
02 for 遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每一元素。
03while当条件为真时,循环运行语句块。
04try与except,finally配合使用,处理程序运行时出现的异常情况。
05class用于定义类。
06def用于定义函数和类方法。
07pass表示此行为空,不运行任何操作。
08assert用于程序调适阶段时,测试运行条件是否满足。
09withPython2.6以后定义的语法,在一个场景中运行语句块。运行语句块前加密,然后在语句块运行退出后解密。
10
yield在迭代器函数内使用,用于返回一个元素。自Python 2.5版本后,这个语句变成了一个运算符。
11raise引发一个错误。
12import导入一个模块或包。
13
from import从包导入模块,或从模块导入某个对象。
14import as将导入对象,赋值给一个变量。
15in判断一个对象,是否在一个字符串/列表/元组中。

著名应用
#
软件
功能
备注
01
Pylons
Web 应用框架 Pylons是最新的Web应用框架中的典型,类似于Django和TurboGears。Pylons受Ruby on Rails影响很深:它的两个组件,Routes和WebHelpers是Rails特性的Python实现。
02
Zope应用服务器
03
Plonecms 内容管理系统
04Django鼓励快速开发的Web应用框架
05
Uliweb国人开发的轻量级Web框架Uliweb在开发中还借鉴了象web2py的Template模板模块,Django的一些设计思想和成果。
06
TurboGearsWeb应用快速开发框架
07
TwistedPython网络应用程序框架
08
Python Wikipedia Robot FrameworkMediaWiki的机器人程序
09
MoinMoinWikiPython写成的Wiki程序
10
flask Python微Web框架
11
tornado非阻塞式服务器
12
WebpyPython微Web框架
13
BottlePython微Web框架
14
EVE网络游戏EVE大量使用Python进行开发
15
Reddit社交分享网站
16
Dropbox文件分享服务
17
Fabric用于管理成百上千台Linux主机的程序库
18
Trac用Python编写的BUG管理系统
19
Mailman用Python编写的邮件列表软件
20
Mezzanine基于Django编写的内容管理系统
21
Blender以C与Python开发的开源3D绘图软件
22
Quora Quora是一个问答SNS网站由 Facebook 前雇员查理·切沃(Charlie Cheever)和亚当·安捷罗(Adam D' Angelo)于2009年6月创办,实时更新部分 web service 采用开源 Tornado (web framework)。

GUI
#
GUI
功能
备注
01
TkinterPython默认图形界面接口。Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。
02
PyGTK用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的库。
03
PyQt用于python的Qt开发库,使用GPL协议。QT是实现KDE环境的库,由一系列的模块组成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是Scintillar编辑器类的Qt接口。
04
Pyside
跨平台应用程式框架Qt的Python绑定版本,使用LGPL协议。 提供和PyQt类似的功能,并相容 API。
05
wxPythonGUI编程框架。 熟悉MFC的人会非常喜欢,简直是同一架构(对于初学者或对设计要求不高的用户来说,使用Boa Constructor可以方便迅速的进行wxPython的开发)。
06
PmwPython megawidgets,Python超级GUI组件集,一个在python中利用Tkinter模块构建的高级GUI组件。每个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。

其它工具库
#
功能
备注
01
PIL (Python Imaging Library)
提供强大的图形处理能力。是Python用户进行图象处理的强有力工具。提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印、合并、显示。还能进行一些图形效果的处理,如图形的放大、缩小和旋转等。
02
PsycoPython代码加速度器。可使Python代码的执行速度,提高到与编译语言一样的水平。
03
PyMedia用于多媒体操作的python模块。提供了丰富而简单的接口用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。
04
PyGame用于多媒体开发和游戏软件开发的模块。
05
PyOpenGL模块封装了“OpenGL应用程序编程接口”。通过该模块python程序员可在程序中集成2D和3D的图形。
06
smtplib发送电子邮件。
07
ftplib定义了FTP类和一些方法,用以进行客户端的ftp编程。如想了解ftp协议的详细内容,请参考RFC959。
08
PyOpenCLOpenCL的Python接口。通过该模块可以使用GPU实现并行计算。

优点

01、简单

Python是一种代表简单主义思想的语言。


阅读一个良好的Python程序就感觉像是在读英语一样。它使你能专注于解决问题而不是去搞明白语言本身。


02、易学

Python极其容易上手,因为Python有极其简单的说明文档


03、速度快

Python底层是用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快。


04、免费、开源

Python是FLOSS(自由/开放源码软件)之一。FLOSS是基于一个团体分享知识的概念。


使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。


05、高层语言

用Python语言编写程序的时候,无需考虑诸如如何管理你的程序使用的内存一类的底层细节。


06、可移植性

由于Python的开源本质,Python已被移植在许多平台上(经过改动使它能够工作在不同平台上)。


这些平台,包括:Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。


07、解释性

一个用编译性语言譬如:C或C++写的程序可从源文件(即C或C++语言)转换到计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。


运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可直接从源代码运行程序。


在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。


08、面向对象

Python既支持面向过程的编程,也支持面向对象的编程。


在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。


在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。


09、可扩展性

如需要一段关键代码运行得更快或希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。


10、可嵌入性

可把Python嵌入C/C++程序,从而向程序用户提供脚本功能。


11、丰富的库

Python标准库确实很庞大。


可帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。


这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。


12、代码规范

Python采用强制缩进的方式,使得代码具有较好可读性。且Python语言写的程序,不需要编译成二进制代码。


缺点

01、单行语句和命令行输出问题

很多时候不能将程序连写成一行,譬如;import sys;for i in sys.path:print i。


而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。


02、独特的语法

这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。


最常见的情况是tab和空格的混用会导致错误,而这是用肉眼无法分别的。


03、运行速度慢

这里是指与C和C++相比。


扫一扫关注 "德云社区"

版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。
AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区 |网站地图  

GMT+8, 2024-11-23 07:58 , Processed in 0.035377 second(s), 31 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表