您的位置:首页 > 理论基础

第1课 Python简介及历史以及计算机简介(上)

2017-01-12 18:24 253 查看

Python概述

Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。1
这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。
目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。

现代计算机系统简介

这里我们首先简要了解一下现代计算机的体系结构。现代计算机通常是由计算机硬件和 软件两部分组成,计算机硬件设备用于执行程序指令,软件是计算机的系统核心,为运行应用程序提供环境和平台。

计算机硬件

一般的计算机的硬件系统通常包含以下几个基本部分:内部存储器(Memory)、包含有运算器和控制器的中央处理器(CPU)、输入设备(Input)、 输出设备(Output) 等。

输入输出设备

输入、输出设备主要用于计算机运行程序和计算机使用者之间的交互,输入设备常见的有键盘和鼠标,而键盘又是常用于获取用户键盘输入信息。输出设备在一般的计算机系统上有显示器、打印机、声音等,通常显示器作为程序运行结果的输出的主要设备。

内部存储器

计算机的内存主要以电的方式存储数字(二进制)数据,分随机存储器和只读存储器。

中央处理器

中央处理器在计算机世界里称之CPU,主要由两部分组成:运算器和控制器。运算器又称算术逻辑单元,它是完成计算机对各种算术运算和逻辑运算的装置,能进行加、减、乘、除等数学运算,也能作比较、判断、查找、逻辑运算等。而控制器则是计算机的指挥中心,负责决定执行程序的顺序,给出执行指令时机器各部件需要的操作控制命令。由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。2

计算机软件

软件是用户与硬件之间的接口界面。用户主要是通过软件与计算机进行交流。软件是计算机系统设计的重要依据。为了方便用户,为了使计算机系统具有较高的总体效用,在设计计算机系统时,必须通盘考虑软件与硬件的结合,以及用户的要求和软件的要求。3

计算机软件分类

计算机软件总体分为系统软件和应用软件两大类:系统软件是各类操作系统,如windows、Linux、UNIX 等,还包括操作系统的补丁程序及硬件驱动程序,都是系统软件类。应用软件可以细分的种类就更多了,如工具软件、游戏软件、管理软件等都属于应用软件类。

系统软件, 系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。 一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。

应用软件, 应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。

Python简介

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,属于应用层软件。自从20 世纪90 年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务、自动化运维、图像处理游戏和Web 网站开发等领域。Python已经成为最受欢迎的程序设计语言之一。4、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python教授程序设计课程。例如麻省理工学院的计算机科学及编程导论课程就使用Python语言讲授。众多开源的科学计算软件包都提供了Python
的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如如下3 个十分经典的科学计算扩展库:NumPy、SciPy 和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。
Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。

Python的历史

Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido 为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为 ABC 语言的一种继承。之所以选中 Python (大蟒蛇的意思)作为程序的名字,是因为他是一个Monty Python 的飞行马戏团的爱好者。
ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC 这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC 语言并没有成功,究其原因,Guido 认为是由其非开放性使用原则所造成的。Guido 决心在 Python 中避免这一错误(的确如此,Python 与其它的语言如C、C++和Java结合的非常好)。同时,他还想实现在 ABC 中闪现过但未曾实现的东西。
就这样,Python就在Guido手中诞生了。实际上,Python 首先是在Mac机上实现的。可以说,Python 是从ABC发展起来,主要受到了Modula-3 (另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。成为一门为众多UNIX 和Linux开发者所青睐的开发语言。5

Python语言特色

可扩充性可以说是Python能作为一种编程语言的一大特色。扩展的新的模块(module)可以用C 或 C++ 写成。而我们也可为现成的模块加上Python的接口。Python 可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务(逻辑)上。
Python也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。
Python语言是一种清晰的语言的另一个意思是,它的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if 语句的下一行不向右缩进)都不能通过编译。这样有意的强制程序员养成良好的编程习惯。其中很重要的一项就是Python的缩进规则。

Python前景

Python在编程领域的占有率一直处于稳步上升之中,根据最新的数据,Python排名第七。前六名分别是Java,C,VB,C++,PHP和Perl。随着微软将Python纳入.Net 平台,相信Python的将来会更加强劲发展。Python 很可能会成为.Net平台快速开发的主流语言。欲了解这方面情况,请参考Iron Python的相关信息。
著名的搜索引擎 Google 也大量使用Python。更加令人吃惊的是,在Nokia 智能手机所采用的Symbian操作系统上,Python同样也可以运行在Android手机操作系统上,有很多Python爱好者通过Android平台来学习Python语言,无理由不相信Python将 成为继C++,Java 之后的第三个编程语言!可见Python 的影响力之巨大。

Python的语言地位

通常认为,Python是一种解释性的语言,但是这种说法是不正确的,实际上Pyt hon在执行时,首先会将.py 文件中的源代码编译成Python的byte code (字节码),然后再由Python Virtual Machine来执行这些编译好的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。

Python的应用领域

Python 不仅仅是一个设计优秀的程序语言,它能够完成现实中的各种任务,包括开发者们日复一日所做的事情。作为编制其他组件、实现独立程序的工具,它通常应用于各种领域。实际上,作为一种通用语言,Python 的应用角色几乎是无限的:你可以在任何场合应用Python, 从网站和游戏开发到机器人和航天飞机控制。
尽管如此,Python 的应用领域分为如下几类。下文将介绍一些Python 如今最常见的应用领域,以及每个应用领域内所用的一些工具。我们不会对各个工具进行深入探讨,如果你对这些话题感兴趣,请从Python 网站或其他一些资源中获取更多的信息。6

系统编程

Python 对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件(有时也被称为Shell 工具)的理想工具。Python 程序可以搜索文件和目录树,可以运行其他程序,用进程或线程进行并行处理等等。
Python 的标准库绑定了POSIX 以及其他常规操作系统(OS )工具:环境变量、文件、套接字、管道、进程、多线程、正则表达式模式匹配、命令行参数、标准流接口、Shell 命令启动器、文件名扩展等。此外,很多Python 的系统工具设计时都考虑了其可移植性。例如,复制目录树的脚本无需做任何修改就可以在几乎所有的Python 平台上运行。

用户图形接口

Python 的简洁以及快速的开发周期十分适合开发GUI 程序。Python 内置了TKinter 的标准面向对象接口Tk GUI API ,使Python 程序可以生成可移植的本地观感的GUI应用程序 。Python/Tkinter GUI 不做任何改变就可以运行在微软Windows 、X Windows(UNIX 和Linux )以及Mac OS(Classic 和OS X 都支持)等平台上。一个免费的扩展包PMW
,为Tkinter 工具包增加了一些高级部件。此外,基于C++ 平台的工具包wxPython GUI API 可以使用Python 构建可移植的GUI应用程序 。
诸如PythonCard 和Dabo 等一些高级工具包均是构建在wxPython 和Tkinter 的基础API 之上的。对于运行于浏览器中的应用程序,Jython(Java 版本的Python ,我们将会在第2章中进行介绍)和Python 服务器端CGI 脚本提供了其他一些用户界面的选择。

数据库编程

对于传统的数据库需求,Python 提供了对所有主流关系数据库系统的接口,例如,Sybase 、Oracle 、Informix 、ODBC 、MySQL 、PostgreSQL 、SQLite等常用的数据库Python均有相应的接口函数库访问这些数据库。Python定义了一种通过Python 脚本存取SQL数据库系统的且可移植的数据库API 接口函数,这个API对于各种底层应用的数据库系统都是统一的。例如,因为厂商的接口实现为可移植的API
,所以一个写给自由软件MySQL数据库访问应用脚本在很大程度上不需改变就可以工作在其他数据库系统上(例如,Oracle),仅仅需要将底层的厂商接口替换掉就可以实现。

数值计算和科学计算编程

我们之前提到过的Python数值编程方面的扩展包NumPy包括很多高级工具,例如,矩阵对象、标准数学库的接口等。通过NumPy将Python 变成一个缜密严谨并简单易用的数值计算工具,其他一些数值计算工具为Python 提供了动画、3D 可视化、并行处理等功能的支持。

游戏、图像、人工智能等

Python可以利用pygame系统进行图像图形处理和游戏编程;用PIL和其他的一些工具进行图像处理;用PyRo 工具包进行机器人控制编程;用xml 库、xmlrpclib 模块和其他一些第三方扩展进行XML 解析;使用神经网络仿真器和专业的系统shell进行AI 编程;使用NLTK 包进行自然语言分析:甚至可以使用PySol 程序下棋娱乐。可以从Vaults of Parnassus 以及新的PyPI 网站(请在Google
或http://www.python.org 上获得具体链接)找到这些领域的更多支持。

组件集成

在介绍Python 作为控制语言时,曾涉及它的组件集成的角色。Python 可以通过C/C++ 系统进行扩展,并能够嵌套C/C++ 系统的特性,使其能够作为一种灵活的粘合语言,脚本化处理其他系统和组件的行为。例如,将一个C 库集成到Python 中,能够利用Python 进行测试并调用库中的其他组件;将Python 嵌入到产品中,在不需要重新编译整个产品或分发源代码的情况下,能够进行产品的单独定制。
为了在脚本中使用,在Python 连接编译好组件时,例如,SWIG 和SIP 这样的代码生成工具可以让这部分工作自动完成。更大一些的框架,例如,Python 的微软Windows 所支持的COM 、基于Java 实现的Jython 、 基于.NET 实现的IronPython 和各种CORBA 工具包,提供了多种不同的脚本组件。例如,在Windows 中,Python 脚本可利用框架对微软Word 和Excel 文件进行脚本处理。

Internet脚本

Python 提供了标准Internet 模块,使Python 能够广泛地在多种网络任务中发挥作用,无论是在服务器端还是在客户端都是如此。脚本可以通过套接字进行通信;从发给服务器端的CGI 脚本的表单中解析信息;通过URL 获取网页;从获取的网页中解析HTML 和XML 文件;通过XML-RPC 、SOAP 和Telnet 通信等。Python 的库使这一切变得相当简单。

Python开发环境的安装与配置

Python是开源自由软件,所有Python的开发环境基本都是可以从网络上免费下载安装的,多数的Python 相关的软件和书籍均可在Python官网上找寻到,Python的官方网站是:www.python.org。使用Windows用户可以从http://www.python.org/getit/ 网页里下载适合自己使用计算机硬件平台版本的Python安装包。例如,如果您使用的计算机安装了WindowsXP
操作系统,计算机的CPU 是Intel的处理器,那你可以选择点击下载“Python 2.7.5 Windows x86 MSI Installer”到您计算机本地安装Python2.7.5,而使用Linux-Ubuntu操作系统的用户则不需要下载、安装Python开发环境,在安装完Ubuntu操作系统时Python开发环境一并安装完毕。

前辈寄语

读一下像ESR这样的超级电脑高手谈Python的话,你会感到十分有意思7:

Eric S. Raymond是《The Cathedral and the Bazaar》的作者、“开放源码”一词的提出人。 他说Python已经成为了他最喜爱的编程语言。这篇文章也是促使我第一次接触Python 的 真正原动力。

Bruce Eckel著名的《Thinking in Java》和《Thinking in C++》 的作者。他说没有一种语言 比得上Python使他的工作效率如此之高。同时他说Python可能是唯一一种旨在帮助程序 员把事情弄得更加简单的语言。请阅读完整的采访以获得更详细的内容。

Peter Norvig是著名的Lisp语言书籍的作者和Google公司的搜索质量主任(感谢Guido van Rossum告诉我这一点)。他说Python始终是Google的主要部分。事实上你看一下Google 招聘的网页就可以验证这一点。在那个网页上,Python 知识是对软件工程师的一个必需 要求。

Bruce Perens是OpenSource.org和UserLinux项目的一位共同创始人。UserLinux 旨在创造一 个可以被多家发行商支持标准的Linux发行版。Python 击败了其它竞争对手如Perl 和Ruby 成为UserLinux支持的主要编程语言。

思考与练习

 下载安装setuptools工具包,使用easy_install安装urllib2模块

https://pypi.python.org/pypi/setuptools


 安装pip工具包,学习pip的search、install等功能

https://pypi.python.org/pypi/pip


 安装ipython工具包

https://pypi.python.org/pypi/ipython


 学习使用ipython notebook –pylib=inline

 配置Sublime及Notepad++

Notpad++: http://www.douban.com/note/311837575/ Sublime : http://www.douban.com/note/311834881/


Hello Python

初识Python语言

Python(英语发音:/’pain/), 是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum 于1989年底发明,第一个公开发行版发行于1991 年。Py- thon 语法简捷而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。Python语言的发明者Guido Van Rossum 在90 年代初发明了Python
语言,Python是目前运行在现代计算机上的为数不多的几款高性能、通用的计算机编程语言,Python语言支持多种自由免费的工具包,可以运行在目前主流的操作系统和平台下,可以从http://www.python.org 网站下载各类Python相关技术文档和软件。8

Python-Shell里运行Python语句

Python是交互式解释性语言,简单功能Python语句可以直接在Python自带的Sh-ell 里直接运行。Python-Shell工具非常适合初学者在学习语法时使用。

Windows 操作系统可以从开始菜单里找到并点击Python2.x.y下的IDLE(Python GUI),而Linux用户则只需在终端里键入Python便可进入Python 的交互式Shell 环境。

退出Python-Shell 可以键入quit()或者Ctlr+d也可以退出Python-Shell。
在Python-Shell里依次键入下列语句,可以体验一下Python基本语法。

>>>x = 12
>>>y = 13
>>>z = x + y
>>>print z
25
>>>print 'hello the cruel world!'
hello the cruel world!

注1:“ >  >  > ”是Python-Shell下的命令,无“ >  >  > ”的行则表示上一条语句的执行结果输出。
注2:等号’=’前面的字母x、y、z我们在Python 里称之为,等号右边的表达式的值赋值给左边的变量。
现在我们暂且这样去理解上边的代码,代码第1行是创建一个变量 x 并且赋值12,第2 行查看x变量的值,第3行是输出x的值,第4行代码则是创建变量 y 并且被赋值13,第5行查看y变量的值,第6 行是输出y的值,第7行则是做了一个算术运算操作,将x 和y 两个变量的值求和并将结果赋值给变量z,代码的第8行是打印变量z 的值,也就是说将x 加y 之和打印输出来,代码第9行是输出结果,代码第10行是打印字符串’hello the
cruel world!’,第11 行结果输出在第七行。
我们可以在Python-Shell里直接键入x回车,y回车、z 回车直接看刚刚被赋值了的x、y以及z变量的值。
>>>x
12
>>>y
13
>>>z
25

IDLE-Editor里编写Python程序

在Windows平台下安装了Python2.7.5以后,可以从开始菜单里找到Python2.7 文件夹,点击其下的IDLE(Python GUI) 后启动进入了Python-Shell,在IDLE(Python GUI) 的菜单栏上选择“File”  →  “New
Windows”进入IDLE 的Python-Editor程序代码文本编辑器,在IDLE的Python-Editor 编辑器里可以编写多行语句程序如下所示。
在源程序编写完后便可运行、测试程序。测试运行程序之前需要保存源代码,可通过菜单栏“File”  →  “save” 保存编写好的Python 程序为x.py,接着在IDLE 的Editor 里按F5键或者选择Editor 菜单“Run”  →  “Run
Module” 或者直接按 F5键 来运行刚刚编写好的x.py程序。
x = 12
y = 13
z = x + y
print z

程序x.py运行结果如下:

25

IPython里运行Python语句

IPython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell命令,内置了许多很有用的功能和函数。通过 ipython 命令启动。
ubuntu下安装IPython
在ubuntu下只需要在终端里键入命令sudo apt-get install ipython就装好了。
Windows下安装IPython
运行 →  cmd  →  easy_install ipython 即可安装IPython 软件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息