一、 1.1  什么是 Python
Python 是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。它可以帮你完成工作,而且一段时间以后,你还能看明白自己写的这段代码。你会对自己如此快地学会它和它强大的功能感到十分的惊讶,更不用提你已经完成的工作了!只有你想不到,没有 Python 做不到

二、  2 1.2  起源
贵铎·范·罗萨姆(Guido van Rossum)于 1989 年底始创了 Python,那时,他还在荷兰的 CWI(Centrum voor Wiskunde en Informatica,国家数学和计算机科学研究院)。1991 年初,Python 发布了第一个公开发行版。这一切究竟是如何开始的呢?像 C、C++、Lisp、Java和 Perl 一样,Python 来自于某个研究项目,项目中的那些程序员利用手边现有的工具辛苦的工作着,他们设想并开发出了更好的解决办法。
                              
那时范·罗萨姆是一位研究人员,对解释型语言 ABC 有着丰富的设计经验,这个语言同样也是在 CWI 开发的。但是他不满足其有限的开发能力。已经使用并参与开发了像 ABC 这样的高级语言后,再退回到 C 语言显然是不可能的。他所期望的工具有一些是用于完成日常系统管理任务的,而且它还希望能够访问 Amoeba 分布式操作系统的系统调用。尽管范·罗萨姆也曾想过为 Amoeba 开发专用语言,但是创造一种通用的程序设计语言显然更加明智,于是在 1989 年末,Python 的种子被播下了。

三、  3 1.3  特点
尽管Python已经流行了超过15年,但是一些人仍旧认为相对于通用软件开发产业而言,它还是个新丁。我们应当谨慎地使用“相对”这个词,因为“网络时代”的程序开发,几年看
上去就像几十年。当人们询问:“什么是 Python?”的时候,很难用任何一个具象来描述它。人们更倾向于一口气不加思索地说出他们对 Python 的所有感觉,Python 是___(请填写)__,这些特点究竟又是什么呢?为了让你能知其所以然,我们下面会对这些特点进行逐一地阐释。
1.3.1  高级
伴随着每一代编程语言的产生,我们会达到一个新的高度。汇编语言是上帝献给那些挣扎在机器代码中的人的礼物,后来有了 FORTRAN、 C 和 Pascal 语言,它们将计算提升到了崭新的高度,并且开创了软件开发行业。伴随着 C 语言诞生了更多的像 C++、Java 这样的现代编译语言。我们没有止步于此,于是有了强大的、可以进行系统调用的解释型脚本语言,例如 Tcl、Perl 和 Python。
这些语言都有高级的数据结构,这样就减少了以前“框架”开发需要的时间。像 Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的。在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们,缩短开发时间与代码量,产生出可读性更好的代码。在 C 语言中,对于混杂数组(Python 中的列表)和哈希表(Python 中的字典)还没有相应的标准库,所以它们经常被重复实现,并被复制到每个新项目中去。这个过程混乱而且容易产生错误。C++使用标准模版库改进了这种情况,但是标准模版库是很难与 Python 内建的列表和字典的简洁和易读相提并论的。                              
1.3.2  面向对象
建议:面向对象编程为数据和逻辑相分离的结构化和过程化编程添加了新的活力。面向对象 编程支持将特定的行为、特性以及和/或功能与它们要处理或所代表的数据结合在一起。
Python 的面向对象的特性是与生俱来的。然而,Python 绝不想 Java 或 Ruby 仅仅是一门面向对象语言,事实上它融汇了多种编程风格。例如,它甚至借鉴了一些像 Lisp 和 Haskell 这样的函数语言的特性。
1.3.3  可升级
大家常常将 Python 与批处理或 Unix 系统下的 shell 相提并论。简单的 shell 脚本可以用来处理简单的任务,就算它们可以在长度上(无限度的)增长,但是功能总会有所穷尽。Shell脚本的代码重用度很低,因此,你只能止步于小项目。实际上,即使一些小项目也可能导致脚本又臭又长。Python 却不是这样,你可以不断地在各个项目中完善你的代码,添加额外的新的或者现存的 Python 元素,也可以重用您脑海中的代码。Python 提倡简洁的代码设计、高级的数据结构和模块化的组件,这些特点可以让你在提升项目的范围和规模的同时,确保灵活性、一致性并缩短必要的调试时间。“可升级”这个术语最经常用于衡量硬件的负载,通常指为系统添加了新的硬件后带来的性能提升。我们乐于在这里对这个引述概念加以区分,我们试图用“可升级”来传达一种观念,这就是:Python 提供了基本的开发模块,你可以在它上面开发你的软件,而且当这些需要扩展和增长时,Python 的可插入性和模块化架构则能使你的项目生机盎然和易于管理。
1.3.4  可扩展
就算你的项目中有大量的 Python 代码,你也依旧可以有条不紊地通过将其分离为多个文件或模块加以组织管理。而且你可以从一个模块中选取代码,而从另一个模块中读取属性。更棒的是,对于所有模块,Python 的访问语法都是相同的。不管这个模块是 Python 标准库中的还是你一分钟之前创造的,哪怕是你用其他语言写的扩展都没问题!借助这些特点,你会感觉自己根据需要“扩展”了这门语言,而且你已经这么做了。代码中的瓶颈,可能是在性能分析中总排在前面的那些热门或者一些特别强调性能的地方,可以作为 Python 扩展用 C 重写。 。需要重申的是,这些接口和纯 Python 模块的接口是一模一样的,乃至代码和对象的访问方法也是如出一辙的。唯一不同的是,这些代码为性能带来了显著的提升。自然,这全部取决你的应用程序以及它对资源的需求情况。很多时候,使用编译型代码重写程序的瓶颈部分绝对是益处多多的,因为它能明显提升整体性能。
程序设计语言中的这种可扩展性使得工程师能够灵活附加或定制工具,缩短开发周期。虽然像 C、C++乃至 Java 等主流第三代语言(3GL)都拥有该特性,但是这么容易地使用 C 编写扩展确实是 Python 的优势。此外,还有像 PyRex 这样的工具,允许 C 和 Python 混合编程,使编写扩展更加轻而易举,因为它会把所有的代码都转换成 C 语言代码。因为 Python 的标准实现是使用 C 语言完成的(也就是 CPython),所以要使用 C 和 C++编写 Python 扩展。Python 的 Java 实现被称作 Jython,要使用 Java 编写其扩展。最后,还有 IronPython,这是针对 .NET 或 Mono 平台的 C# 实现。你可以使用 C# 或者 VB.Net 扩展 IronPython。
1.3.5  可移植性
在各种不同的系统上可以看到 Python 的身影,这是由于在今天的计算机领域,Python 取得了持续快速的成长。因为 Python 是用 C 写的,又由于 C 的可移植性,使得 Python 可以运行在任何带有 ANSI C 编译器的平台上。尽管有一些针对不同平台开发的特有模块,但是在任何一个平台上用 Python 开发的通用软件都可以稍事修改或者原封不动的在其他平台上运行。这种可移植性既适用于不同的架构,也适用于不同的操作系统。
1.3.6  易学
Python 关键字少、结构简单、语法清晰。这样就使得学习者可以在相对更短的时间内轻松上手。对初学者而言,可能感觉比较新鲜的东西可能就是 Python 的面向对象特点了。那些还未能全部精通 OOP(Object Oriented Programming, 面向对象的程序设计)的人对径直使用 Python还是有所顾忌的,但是 OOP 并非必须或者强制的。入门也是很简单的,你可以先稍加涉猎,等到有所准备之后才开始使用。
1.3.7  易读
Python 与其他语言显著的差异是,它没有其他语言通常用来访问变量、定义代码块和进行模式匹配的命令式符号。通常这些符号包括:美元符号($)、分号(;)、波浪号(~)等等。没有这些分神的家伙,Python 代码变得更加定义清晰和易于阅读。让很多程序员沮丧(或者欣慰)的是,不像其他语言,Python 没有给你多少机会使你能够写出晦涩难懂的代码,而是让其他人很快就能理解你写的代码,反之亦然。如前所述,一门语言的可读性让它更易于学习。我们甚至敢冒昧的声称,即使对那些之前连一行 Python 代码都没看过的人来说,那些代码也是相当容易理解的。                    
1.3.8  易维护
源代码维护是软件开发生命周期的组成部分。只要不被其他软件取代或者被放弃使用,你的软件通常会保持继续的再开发。这通常可比一个程序员在一家公司的在职时间要长得多了。Python 项目的成功很大程度上要归功于其源代码的易于维护,当然这也要视代码长度和复杂度而定。然而,得出这个结论并不难,因为 Python 本身就是易于学习和阅读的。Python 另外一个激动人心的优势就是,当你在阅读自己六个月之前写的脚本程序的时候,不会把自己搞得一头雾水,也不需要借助参考手册才能读懂自己的软件。
1.3.9  健壮性
没有什么能够比允许程序员在错误发生的时候根据出错条件提供处理机制更有效的了。针对错误,Python 提供了“安全合理”的退出机制,让程序员能掌控局面。一旦你的 Python 由于错误崩溃,解释程序就会转出一个“堆栈跟踪”,那里面有可用到的全部信息,包括你程序崩溃的原因以及是那段代码(文件名、行数、行数调用等等)出错了。这些错误被称为异常。如果在运行时发生这样的错误,Python 使你能够监控这些错误并进行处理。这些异常处理可以采取相应的措施,例如解决问题、重定向程序流、执行清除或维护步骤、正常关闭应用程序、亦或干脆忽略掉。无论如何,这都可以有效的缩减开发周期中的调试环节。Python 的健壮性对软件设计师和用户而言都是大有助益的。一旦某些错误处理不当,Python 也还能提供一些信息,作为某个错误结果而产生的堆栈追踪不仅可以描述错误的类型和位置,还
能指出代码所在模块。
1.3.10  高效的快速原型开发工具
我们之前已经提到了 Python 是多么的易学易读。但是,你或许要问了,BASIC 也是如此啊,Python 有什么出类拔萃的呢?与那些封闭僵化的语言不同,Python 有许多面向其他系统的接口,它的功能足够强大,本身也足够强壮,所以完全可以使用 Python 开发整个系统的原型。显然,传统的编译型语言也能实现同样的系统建模,但是 Python 工方面的简洁性让我们可以在同样的时间内游刃有余的完成相同的工作。此外,大家已经为 Python 开发了为数众多的扩展库,所以无论你打算开发什么样的应用程序,都可能找到先行的前辈。你所要做的全部事情,就是来个“即插即用”(当然,也要自行配置一番)!只要你能想得出来,Python 模块和包就能帮你实现。Python 标准库是很完备的,如果你在其中找不到所需,那么第三方模块或包就会为你完成工作提供可能。                              
1.3.11  内存管理器
C 或者 C++最大的弊病在于内存管理是由开发者负责的。所以哪怕是对于一个很少访问、修改和管理内存的应用程序,程序员也必须在执行了基本任务之外履行这些职责。这些加诸在开发者身上的没有必要的负担和责任常常会分散精力。在 Python 中,由于内存管理是由 Python 解释器负责的,所以开发人员就可以从内存事务中解放出来,全神贯注于最直接的目标,仅仅致力于开发计划中首要的应用程序。这会使错误更少、程序更健壮、开发周期更短。
1.3.12  解释性和(字节)编译性
Python 是一种解释型语言,这意味着开发过程中没有了编译这个环节。一般来说,由于不是以本地机器码运行,纯粹的解释型语言通常比编译型语言运行的慢。然而,类似于 Java,Python实际上是字节编译的,其结果就是可以生成一种近似机器语言的中间形式。这不仅改善了 Python的性能,还同时使它保持了解释型语言的优点。

说明:转自 《Python核心编程 第二版》 ,感谢编者。

python之 python 起源、语言特点相关推荐

  1. python相关背景及语言特点

    一.python的前世今生 ·起源  python是一种面向对象的解释型语言,由荷兰人Guido van Rossum在1989年的圣诞节期间为打发无趣时间而发明.其名称来源于一部BBC喜剧Monty ...

  2. c python.h_C++/C语言Python H

    如果您只想编写一些C++代码并使它可以从Python调用,那么您可以通过{a1}来实现.(实际上,只是延伸:忽略另一半.) 基本上,如果您编写一个新的模块foo,任何人都可以import foo并调用 ...

  3. python是用什么语言开发的-专为人工智能和数据科学而生的Go语言,或将取代Python...

    时间回到30年前,Python 首次亮相.花了20年时间,Python才获得开发者的认可.来到 2019 年,Python已经成为开发人员第二喜欢的语言. 在过去的5年时间里,Python 成为了机器 ...

  4. python是一种语言吗-Python是一种什么样的编程语言?解释?编译?汇编?机械?...

    作为一名技术专家和软件工程师,新技术和语言地持续探索必不可少,笔者将从现在带大家开启"Python"的世界.如果你刚好从事面向对象开发,那么不妨给Python一个机会.在循序渐进地 ...

  5. c++强大还是python强大-Python 到底是强类型语言,还是弱类型语言?

    0.前言 我在上一篇文章中分析了 为什么 Python 没有 void 类型 的话题,在文章发布后,有读者跟我讨论起了另一个关于类型的问题,但是,我们很快就出现了重大分歧. 我们主要的分歧就在于:Py ...

  6. python叫什么语言-Python代码是什么语言

    Python代码是一种计算机程序设计语言,是一种动态的.面向对象的脚本语言,最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. Python代码是 ...

  7. python是一种语言还是一个软件-python和GO语言应该选择哪一个?老男孩教育

    IT行业是很多人都认为非常受欢迎的领域,因为前景好.待遇高.从业岗位多,越来越多人都想要学习编程.那么编程语言众多,在选择的时候很多人都会在python和GO语言进行徘徊,该如何选择呢? python ...

  8. 没有c语言基础可以学python吗-没有c语言基础,能不能学好python?

    学习C语言对学好python有帮助吗? 答案是有. 学好python需不需要有C语言基础? 答案是不一定. 实际上,所有的编程语言都是在做一件事情--告诉计算机,将你输入的数据A如何转化成需要输出的数 ...

  9. python编程和c语言编程的区别-C语言 python Java 等主要流行编程语言优劣对比

    如果一个IT小白准备进入IT开发行列,是该选Java呢还是另外的开发语言呢?开发一直是一个倍受争议的话题,那么其实这个问题并没有标准答案. 分享之前我还是要推荐下我自己的C/C++学习交流群:三四零六 ...

  10. python语言属于-python属于哪种语言

    python是一种跨平台的计算机程序设计语言.python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言,可以应用于科学计算和统计.Web开发.人工智能.桌面界面开发.网络爬虫等领域. ...

最新文章

  1. HTML:Browser 对象
  2. ajax实现关联词提示
  3. python读取只读word只读_人生苦短我学Python——Word处理之快速Word转PDF
  4. 由mysql8降级到mysql5
  5. 苹果CMSV10绿色毛毛虫主题模板
  6. ES6 规格之相等运算符
  7. 提升自己身价的四个方式
  8. dapperpoco mysql_DapperPoco -- 基于Dapper的、轻量级的、高性能的、简单的、灵活的ORM框架...
  9. 大规模知识图谱的构建及应用
  10. 今天开始研究小米便签的开源代码
  11. 通过子网掩码和ip地址计算网络地址和广播地址
  12. 杭州SEO:独家揭秘网站首页排版布局的详细方法!
  13. Atcoder ABC162 D - RGB Triplets
  14. 虚拟机安装+win10系统
  15. 第1107期AI100_机器学习日报(2017-09-29)
  16. LC-3 子程序调用与模拟栈调用递归函数
  17. Java微信支付API文档测试
  18. 离散傅里叶变换----解释的最透彻的|包括定义物理意义
  19. DirectX11-鼠标拾取
  20. 陪审团(01背包, 难)

热门文章

  1. Swift 之添加点击事件
  2. 如何获取支付宝红包参数?
  3. 影响光伏并网逆变器质量的因素有哪些?
  4. 鼠来宝4:萌在囧途[Alvin and the Chipmunks: The Road Chip]
  5. springboot 打印sql日志
  6. hibernate中session和sessionFactory的作用
  7. 【NOJ1571】【算法实验三】【分支限界法】八数码
  8. 区块链安全入门笔记(二) | 慢雾科普
  9. 别被软文洗脑,回长沙后端开发告诉你真实的长沙
  10. 爬取网站生成字典的常用工具:cewl