Python是一种通用的脚本开发语言,比其他编程语言更加简单、易学。
什么是Python?
Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。
Python提供高效的高级数据结构,能简单有效地面向对象编程。
Python语法和动态类型,及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
Python在各个编程语言中比较适合新手学习,Python解释器易于扩展,可以使用C、C++或其他可通过C调用的语言扩展新的功能和数据类型。
Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供适用于各个主要系统平台的源码或机器码。
Python的由来是什么?
自20世纪90年代初Python语言诞生至今,已被逐渐广泛应用于系统管理任务的处理和Web编程。
1995年,Guido van Rossum在弗吉尼亚州的国家创新研究公司(CNRI)继续在Python上的工作,并在那里发布该软件的多个版本。
2000年五月,Guido van Rossum和Python核心开发团队转到BeOpen.com并组建了BeOpen PythonLabs团队。同年十月,BeOpen PythonLabs团队转到Digital Creations(现为Zope Corporation)。
2001年,Python软件基金会(PSF)成立,这是一个专为拥有Python相关知识产权而创建的非营利组织。Zope Corporation是PSF的赞助成员。
Python创始人吉多·范罗苏姆。1989年圣诞节期间,在阿姆斯特丹,为打发圣诞节的无趣,决心开发一个新的脚本解释程序,之所以选中单词Python作为该编程语言的名字,是因英国20世纪70年代首播的电视喜剧《蒙提·派森的飞行马戏团》。
ABC由Guido参加设计的一种教学语言。就Guido看来,ABC语言优美强大,专为非专业程序员设计的。但ABC语言没成功,究其原因,他认为是其非开放造成的,他决心在Python中避免这一错误。同时想实现在ABC中闪现过但未曾实现的东西。
Python从ABC发展起来,主要受到Modula-3的影响。并且结合Unix shell和C的习惯。
自2004年以后,python使用率呈线性增长。
2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。
由于Python语言的简洁、易读及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。
如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。
而Python专用的科学计算扩展库就更多了,如如下3个十分经典的科学计算扩展库:NumPy、SciPy和matplotlib,分别为Python提供了快速数组处理、数值运算以及绘图功能。
因此Python语言及众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。
2018年3月,该语言作者在邮件列表上宣布Python 2.7将于2020年1月1日终止支持。
用户如想在这日期后得到与Python 2.7有关的支持,需要付费给商业供应商。
Python的优点在哪?
简单:Python代表简单主义思想的语言。阅读一个好的Python程序像在读英语。这能使你专注解决问题。
易学:Python易上手,因有极其简单的说明文档 。
易读、易维护:风格清晰划一、强制缩进。
用途广泛
速度较快:Python底层用C语言写的,很多标准库和第三方库也都是用C写的,运行速度非常快。
免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可自由发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。
解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同标记、选项完成。
运行程序时,连接/转载器软件程序从硬盘复制到内存中且运行。
而Python语言写的程序不需编译成二进制代码。可以直接从源代码运行程序。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,翻译成计算机使用的机器语言并运行。这使使用Python更简单。也使Python程序更易于移植。
面向对象:Python既支持面向过程的编程也支持面向对象的编程。
在“面向过程”的语言中,程序是由过程或仅可重用代码的函数构建起来的。
在“面向对象”的语言中,程序由数据和功能组合而成的对象构建起来的。
Python完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。
Python支持重载运算符和动态类型。相对Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools,itertools)提供Haskell和Standard ML中久经考验的函数式程序设计工具。
可扩展性、可扩充性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。
Python编译器本身也可被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。
在Google内部的很多项目,例如Google Engine用C++编写性能要求极高的部分,后用Python或Java/Go调用相应的模块。
可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。
除标准库外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。Python的作者设计限制性很强的语法,使不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。
其中很重要的一项就是Python的缩进规则。
一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定(而C语言是用一对大括号来明确的定出模块的边界,与字符的位置毫无关系)。
通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。
高级动态编程:虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。
Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shellscript、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
做科学计算优点多:说起科学计算,首先会被提到的可能是MATLAB。
除MATLAB的一些专业性很强的工具箱还无法被替代外,MATLAB大部分常用功能都能在Python中找到相应的扩展库。
和MATLAB相比,用Python做科学计算有如下优点:
●首先,MATLAB是一款商用软件且价格不菲。而Python完全免费,众多开源的科学计算库都提供了Python的调用接口。用户能在任何计算机上免费安装Python及其绝大多数扩展库。
●其次,与MATLAB相比,Python更易学、更严谨的语言。能让用户编写出更易读、易维护的代码。
●最后,MATLAB主要专注于工程和科学计算。
即使在计算领域,常会遇到文件管理、界面设计、网络通信等各种需求。而Python有着丰富的扩展库,可轻易完成各种高级任务,开发者可用Python实现完整应用程序所需的各种功能。
Python的缺点是什么?
缺点
单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,须将程序写入一个.py文件。
给初学者带来困惑:独特的语法,这也许不应该被称为局限,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员也可能陷入陷阱中。
运行速度慢:这指与C和C++相比。Python开发人员尽量避开不成熟或不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人认为Python很慢。
根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或用使用C/C++语言改写这部分程序。可用的JIT技术是PyPy。
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的设计“优雅”、“明确”、“简单”。所以Perl语言中“总有多种方法来做同一件事”的理念在Python开发者中,常常难以忍受。
Python开发者“用一种方法,最好是只有一种方法来做一件事”。在设计Python语言时,如面临多种选择,Python开发者一般会拒绝花俏的语法,而选明确的没有或很少有歧义的语法。
由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。
更高级的Virtual Machine
Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。
这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,而是说相对于Java 或.NET,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。
基于C的Python编译出的字节码文件,通常是.pyc格式。除此之外,Python还可以以交互模式运行,比如主流操作系统Unix/Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达操作指令即可实现交互操作。
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
