《从问题到程序:用Python学编程和计算》——1.2 Python语言简介-阿里云开发者社区

开发者社区> 华章计算机> 正文

《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

简介:
+关注继续查看

本节书摘来自华章计算机《从问题到程序:用Python学编程和计算》一书中的第1章,第1.2节,作者 裘宗燕,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 Python语言简介

本节将首先简单介绍Python语言的一些基本情况,包括其发展和使用的情况。而后介绍Python语言系统的安装和使用方面的基本常识。

1.2.1 Python语言的发展和应用

Python语言是CWI(荷兰国家数学和计算机研究中心)的程序员Guido van Rossum在1989年开始开发的一种高级编程语言,当时的主要设计目标是希望能用于方便地管理CWI的Amoeba操作系统。后来,由于其各方面的优点而逐渐流行起来。

Python语言现在由Python软件基金会(Python Software Foundation,PSF)主导开发和管理。PSF是一个非营利性的国际组织,其网址为python.org。Python 2.0版本于2000年发布,3.0版本于2008年年底发布。Python 3.0对语言做了全面清理和整合,修正了原来语言里的许多重要缺陷,使其概念体系更清晰,各方面结构更具有统一性。

目前Python处于2.0版与3.0版并存的情况。Python 2.0的2.7版已确定为Python 2.0的最后版本,PSF只会对其做有限的修改完善,不再做大的升级。PSF已经把精力集中于Python 3.0。Python的3.5版本已于2015年9月发布。

由于这些情况,本书选择Python 3.0版本作为工作语言,以适应未来发展的需要。书中所有实例(及所附代码)都在3.4版中开发,但这些代码里并没有任何特定于3.4版本的特殊结构,也符合3.5版的规定,应能在各种Python 3.0系统上运行。

Python语言的特点

Python的基本设计目标是让程序简单、明确和优雅,在设计上坚持了一套较为清晰而且整齐划一的风格。Python程序具有易写、易读、易维护修改的特点,受到广大使用户的欢迎。这些特质也使Python的使用越来越广泛。21世纪以来,Python已经发展成为最受欢迎的编程语言之一,其使用非常广泛。国际上有些公司或机构做过(或持续在做)有关各种编程语言使用情况的统计,在各种统计结果中Python都位于前五六名之内。它还被TIOBE编程语言排行榜(一个很有影响力的语言排行榜)评为2010年度语言。

Python语言以统一的方式支持一种先进的编程理念和技术:面向对象的程序设计。所有编程机制和结构围绕着对象的概念,程序里定义和操作的各种实体都是对象。这样的语言设计有利于编程概念的统一性,也使做出的程序代码和部件可以比较方便地重复使用。Python语言的设计也为开发大规模软件系统提供了很好的支持。

Python是一个比较高级的编程语言,提供了一批容易使用的数据功能,使人可以很方便地生成和处理大批数据。再加上Python语言的一些基本设计的特点,使已经开发出来的程序比较容易修改扩充,有利于软件系统的升级改造。这些特性有利于减轻软件开发者的工作负担,提高编写复杂程序的工作效率。这也是许多IT公司乐于选择和使用Python作为其主要软件开发语言的最重要原因。

在使用Python开发程序的过程中,程序执行采用交互式方式:人可以随时把一个命令送给Python系统(解释器),解释器立刻执行这个命令(参考图1.1和1.2),使人马上就能看到执行的效果。这种执行方式使人可以很方便地在编程过程中做各种试验,提高工作效率。一个Python程序(称为模块)就是一系列简单或复杂的命令。人们也把采用这种形式的语言称为脚本语言(script language),这种语言的程序就像是一系列命令构成的工作脚本。但实际上Python并不是一种简单的脚本语言,而是一个完全能支持大规模软件开发的通用编程语言,其实现也具有较高的实际执行效率。

Python的基本语言提供了很丰富的功能,它还附带了一个规模很大的标准库,提供了很多在实际应用中非常有用的功能。此外,全世界很多开发者已经为Python开发了大量面向各种应用领域的专门程序包,例如面向图形用户界面设计、网络应用、数值计算、数据统计和处理、图形图像处理、可视化等。所有重要的应用领域,都可以找到专门的程序包,大大方便了人们用Python开发各领域应用软件和综合性软件的工作。

在Python语言和标准库的设计中特别考虑了可扩充性,提供了丰富的接口和工具,使有经验的程序员比较容易使用其他语言,例如C、C++、Cython(一种专门用于扩充Python的C语言工具)等编写Python模块,然后就可以像Python标准库包一样方便地使用。这种情况也使一些大公司把Python用作高级的粘接语言(glue language),用一些较低级的语言实现一批性能要求较高的完成具体工作任务的模块,而后用Python实现整个系统的高层控制和调度。这样做,既能获得很好的效率,也方便修改和调整。

Python基金会免费提供最新版本的Python语言系统和基本开发环境,任何人都可以很方便地获得这个系统。该系统可以在目前各种主要计算机和软件平台上运行,其中包含了丰富的标准程序库包和完整文档。

Python语言有一个很活跃的国际性社团,使用这种语言的人们活动在世界各地(包括中国),探讨、交流学习和使用Python的经验。互联网上有很多与Python有关的信息,有许多Python讨论组。这些都促进了Python语言的学习和传播。

从编程学习和教学的角度,Python语言也是很好的选择,主要原因包括:

  • Python语言比较容易入门,不需要知道复杂的概念就可以开始编程序,写出的简单(或复杂)代码可以马上执行,看到计算结果。这使初学者很容易入门,通过简单的试验开始编程学习,立刻看到自己所写的程序产生的计算及其效果,在这样动脑动手的过程中稳步成长,慢慢地越来越深入地理解程序的意义和编程过程。
  • Python语言的设计特别强调易读易理解的形式,采用分层次的格式来区分复杂程序中的一层层结构。这种规定特别有助于初学者养成良好的编程习惯,有助于写出结构清晰、意义明显的代码,进而学习和掌握正确的编程技术和方法。
  • Python语言机制的跨度比较大,从支持完成最简单计算的表达式开始,一直延伸到当前最先进的编程理念,如面向对象的程序设计、迭代器、数据抽象等。这种情况有利于初学者在一个语言里逐步深入学习编程和计算,在编程中逐步学习更复杂高级的概念和结构,取得编程经验,在编程中深入理解计算的概念和过程。

当然,Python也不是完美的语言(完美的语言并不存在),也有些缺点。一些使用也要特别注意。后面讨论中遇到这种问题时,会专门加以说明。

Python的应用情况

Python已经有了非常广泛的实际使用,国际上许多知名IT公司和机构以其作为主要开发语言,如美国的Google、Yahoo、Dropbox等大公司,CERN(欧洲原子能研究中心)、NASA(美国国家航空航天局)等重要机构,还有大量较小的公司和机构。国内企业的应用正在发展,有较大影响的豆瓣网就是用Python开发的。

此外,全世界Python社团一直在努力,开发了各种各样的Python应用和许多满足各领域需要的通用Python包,这些工作也大大推动了Python的广泛使用。人们开发了一些Python的科学计算专用扩展库。例如得到广泛使用的科学计算扩展库NumPy(高效的数组数据处理)、SciPy(高性能数值运算)和matplotlib(数学绘图库)。大量面向数据处理和计算的开源软件包也为基于Python的使用提供了接口(因此可以作为Python的库调用,支持Python应用开发)。如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。Python语言与这些扩展库结合,构成的开发环境很适合工程技术人员和科研人员处理实验数据、制作图表,以及开发科学和工程计算方面的应用程序。在应用系统领域,Python社团开发了一批支持网络应用开发的Python库和其他方面的库和编程框架,这些工作和后续经验的积累,已经使Python成为目前使用最多的应用系统开发语言之一。

Python正在被世界上越来越多大学用作教授第一门程序设计课程的语言,更多学校以它作为后续课程或选修课程。美国计算机协会会刊(CACM)2014年7月发表了一个调查报告,说Python“已经成为目前美国顶尖大学里最受欢迎的计算机编程入门语言。在计算机专业排名前10的学校里,有8所学校(80%)用Python作为编程入门语言。在计算机排名前39的学校里,有27个学校(69%)用Python作为编程入门语言”。国内许多大学也纷纷开设了Python课程。

Python语言参考材料

Python软件基金会(PSF)通过其网站python.org提供了大量与Python语言和编程有关的材料。

在PSF提供的Python系统(包括Python解释器,也被称为CPython实现,详见下一节)包含一套Python文档,主要内容包括:

  • The Python Tutorial(Python教程),其内容是Python语言各方面基本情况的介绍,介绍Python的基本规则和使用,包括一些简单的程序示例。
  • The Python Language Reference(Python语言手册),详细介绍Python语言的整体情况和语言的各种结构。需要了解语言的细节规定时应该查阅这个手册。
  • The Python Standard Library(Python标准库手册),介绍Python的所有内置常量、内置函数和内置类型,以及标准库中包含的一大批程序包。这些程序包提供了许多重要的特殊功能,例如支持开发互联网应用的功能等。
  • 其他内容,包括CPython系统的情况,典型编程问题的常见处理方式(HOWTO),一些常见问题(FAQ)、术语和解释,等等。

近年来,由于Python语言的发展和普及,国内外都出版了一些有关Python语言和编程的书籍。国外近年出版的相关书籍较多,国内出版了一些译本,也有几本国内作者撰写的书籍。书后参考文献列出了几本,可供参考。

1.2.2 Python系统和IDLE编程环境

本节简单介绍PSF主导开发的CPython系统及其附带的编程环境。对Python初学者而言,只使用这个系统及其所带的程序包就足够了。目前也有一些由开源软件社团或商业软件开发商开发的Python系统,以及一些功能更强大的开发环境。鉴于本书的基本设想和目标读者群,因此不准备涉及任何超出PSF的Python系统的内容。有兴趣的读者可以在阅读本书之后,自己进一步学习,不会有特别的困难。

Python是一种高级语言,按其语法规定写出的程序通常称为Python源程序。一个程序也就是一串字符(分为一些行,有一定格式要求,见后面章节),具有人比较容易使用、书写和阅读的形式,但计算机不能直接执行它们,因为计算机能直接识别和执行的只是具有特定二进制形式的机器语言程序。为了运行Python语言的程序,需要有一个Python解释器来填补Python源程序和实际计算机之间的差异。PSF提供的Python系统(CPython,以下说Python系统就专指这个系统)的主要部分就是一个这种解释器。[ 还有其他Python系统,在python.org网站有些介绍,本书不涉及。]

下面以Windows系统中安装Python的情况作为例子,在其他系统里的情况类似,安装的内容都差不多。首先需要从PSF网站或其他地方下载Python系统的安装文件,然后在所用计算机环境中成功安装后,通常可以看到具体安装内容的快捷启动方式。Python系统安装后,各部分的安装位置、系统的启动方式、启动后窗口显示的情况,在不同运行环境里可能略有不同,但有关系统在功能上没有本质性差异。

基本Python解释器以命令行方式工作。启动这个解释器,它将在屏幕上打开一个交互式的命令行窗口,窗口显示的情况如图1.3所示。在这个窗口里,解释器首先显示一些信息,说明系统的版本号等情况。随后一行说明获得进一步信息的方式(通过help等命令)。最后一行显示符号串 >>>,称为提示符,其后可以看到一个闪动的输入光标,表示要求使用者输入信息。在这种状态下,通过键盘输入的字符将显示在提示符之后,使用者应该在这里输入要求Python执行的命令(程序)。

image

Python解释器采用交互解释的方式工作。如果解释器得到一个完整的Python程序单元,它就执行这个单元,然后输出执行的结果。Python解释器的行为就是不断重复这几个动作的一个工作循环,如图1.4所示。读者可以将这个图与前面讨论计算机的工作方式的图1.2比较,能看到它们具有同样的形式。解释器的工作方式还有些细节,将在后面介绍。


image

除了上述以命令行方式与使用者交互的基本Python解释器外,这个Python系统还提供了一个名字为IDLE的Python程序开发环境,其用途就是帮助使用者更方便地输入和编辑复杂的Python程序,并能随时试验运行正在开发中的程序。

执行IDLE时将会打开一个标准的窗口(不是前面命令行形式的窗口)。图1.5显示的是打开IDLE解释执行窗口的情况。该窗口有些像前面的命令行窗口,IDLE也显示提示符并等待输入。但在这个窗口里可以更方便地输入和编辑。

image

图1.5中显示的是执行了三个Python程序单元之后的现场情况。其中第一个程序单元的命令(第一个提示符那一行)要求计算1的值,解释器给出结果1;第二个程序单元要求计算1 + 1,解释器给出的结果是2;第3个程序单元要求计算2的1000次乘方,解释器给出了一个很长的结果,也是一个整数,但显示在连续几行中。

从图1.5中可以看到,IDLE窗口顶部有标准的窗口菜单条,提供了一组菜单命令。本书的附录D综述了IDLE的功能,其中列出了IDLE的菜单项并给出了简单解释。正文第2章和第4章也有一些介绍。

实际上,IDLE有两种不同执行模式,可能打开两种不同窗口。图1.5显示的是一种称为Shell的窗口,也称为命令模式窗口,支持直接输入命令要求解释器执行。IDLE的另一种窗口是一个很好用的Python程序编辑器(参见第2章图2.1),提供了一套方便的输入、编辑、修改Python程序的功能,使人可以很方便地构建和修改所需的程序(编辑程序)。IDLE还能自动帮助维护良好的Python代码格式,通过不同颜色强调显示程序中的不同成分。在用这个编辑器完成了一个包含一些行的程序或其部分后,可以随时把它送给解释器运行,检查程序的功能。这个编辑器的有关情况将在第2章介绍,第4章介绍了它的更多功能。

除了以交互式方式一个个输入命令,要求Python解释器执行外,也可以先编写好一个Python程序,而后交给Python解释器执行。在操作系统的命令行窗口中,键入Python后跟希望执行的Python程序文件名,就能执行该程序了。

此外,运行IDLE时按F1功能键,也能打开Python系统自带的语言文档。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
8. ㊙ Python 集合三板斧,滚雪球学 Python
8. ㊙ Python 集合三板斧,滚雪球学 Python
4 0
Facebook实时人体姿态估计:Dense Pose及其应用展望
Facebook 和 Inria France 的研究人员分别在 CVPR 2018 和 ECCV 2018 相继发表了两篇有关「人体姿态估计」(human pose estimation) 的文章 [1] [2],用于介绍他们提出的 Dense Pose 系统以及一个应用场景「密集姿态转移」(dense pose transfer)。 本文将简要介绍(1)利用 Dense Pose 实现单张 2D 人体图像到 3D 表面模型的原理 ;(2)如何将 Dense Pose 系统应用在「姿态转移」(pose transfer)这一问题上;(3)粗略展望 Dense Pose 的一些潜在应用。
6 0
SysML 2019论文解读:推理优化
推理优化是机器学习领域的核心问题之一,本文将解读 SysML 会议上两篇与推理优化有关的论文,其中一篇提出了准确高效的二位量化神经网络,另一篇则试图用宽松化图替代优化深度神经网络的计算过程。
5 0
9102年,你已经是个大春节了,你要自己学会用AI了
贴春联、发压岁钱、看春晚,这已经是老编度过的 25 个春节的老套路了。虽然老家拥挤的网络影响了抢红包的速度,但作为人工智能从业者,在猪年的春节期间我们还是发现了越来越多人工智能技术的身影。
6 0
1300篇!CVPR 2019论文接收结果公布,你上榜了吗?
今日,计算机视觉顶会 CVPR 2019 的论文接收结果公布:在超过 5100 篇投稿中,共有 1300 篇被接收,达到了接近 25.2% 的接收率。几家欢喜几家愁,你的论文被接收了吗?
5 0
零基础ML建模,自动机器学习平台R2 Learn开放免费试用
在数据的世界中,机器学习已经成为不可或缺的工具。机器学习可以帮助发现隐藏在大量数据中的特定知识。很多时候,这些知识都不是人类能轻易分析得出的,它展示了大量事实之间的内部联系。但是如果我们需要这些隐藏知识辅助做决策,机器学习建模就成为了一个非常有效的手段。
4 0
拿下国内最大手机厂商的订单!这家公司要用芯片工艺造光学器件
一年前,iPhone X 将具备深度信息的人脸识别方案带入消费级市场,打响了深度视觉在手机市场的第一炮。 随后,OPPO Find X、荣耀 Magic 2、小米 8 探索版等高配「3D 刷脸」的安卓机发布迅速成为行业热议。 需求端的兴起带动了生产力的升级,沉睡多年的深度视觉产业链随即被点燃。一匹「清华系」的黑马闯入赛道——以 DOE 为核心技术的驭光科技——为终端的微型深度视觉产业链补齐关键短板。
6 0
华为技术是如何领先全球的:华为云首次开放日,揭秘2012实验室
很多人都知道华为有一座「2012 实验室」,今天的华为能够成为全球通信巨头,并在技术上保持领先,2012 实验室功不可没。在这里,科研人员总能带来令人惊喜的技术成果,并很快将其加入华为的产品中。3 月 5 日,在华为云的开放日活动中,我们终于能进入这个「中国黑科技最多的地方」一探究竟了。
7 0
关于 python 的缩进
python 对缩进是敏感的,而大多教程对缩进规则,往往就几句话带过,对于没有其他语言基础的初学者,十分不友好,本文就把python常见的缩进问题做了一些整理。
9 0
SysML 2019论文解读:视频分析系统的提升
SysML 2019 已于 3 月 31 日-4 月 2 日在斯坦福成功举办,本文将解读两篇在高效视频分析方面的研究。
4 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载