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 可调用的扩展类库。需要注意的是,在使用扩展类库时可能需要考虑平台问题,某些扩展类库可能不提供跨平台实现。 百度网盘 https://pan.baidu.com/s/1cKxajG 软件仓库 https://digitser.sourceforge.io/ https://pan.baidu.com/s/1TV70__Be1ta0ney1-tudFQ 快速高效 智能编辑 重构 批处理 "数字化 Python IDE" 集成开发环境 http://forum.digitser.cn/thread-2266-1-1.html 从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语文的使用率是呈线性增长的。 由于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实现完整应用程序所需的各种功能。 解释器 Python 是一门跨平台的脚本语言,Python 只规定了一种语法规则。若采用不同编程语言实现 Python 语法并解释程序,就成了一种不同的 Python 解释器。 不管采用哪种编程语言实现 Python 解释器,在编写 Python 应用时的代码规范及语法规则是不变的,变化的只是底层解释器实现,即 "运行时" 的方式。 Python 解释器实现
设计哲学 01、Python的设计哲学是“优雅”、“明确”、“简单”。 因此,Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。 在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。 由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能支撑大规模的软件开发。这些准则被称为Python格言。 在Python解释器内,运行import this可获得完整设计哲学列表。
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 语句:
根据PEP规定,必须使用4个空格来表示每级缩进(不清楚4个空格的规定如何,在实际编写中可以自定义空格数,但是要满足每级缩进间空格数相等)。使用Tab字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。 02、控制语句
著名应用
GUI
其它工具库
优点 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++相比。 "长按二维码" 或 "扫一扫" 关注 "德云社区" 微信公众号 版权声明: 本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。 |