Python 3.x入门到应用实践(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-28 19:46:40

点击下载

作者:赵军 等

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python 3.x入门到应用实践

Python 3.x入门到应用实践试读:

前言

用一句话形容近些年崛起的Python程序设计语言,那就是“无所不在、无所不能”。毫无疑问,Python已经成为最受欢迎的程序设计语言之一。在2018年9月的TIOBE排名中,Python语言已经超过了C++语言,跃升到探花的位置了,仅次于状元的Java语言和榜眼的C语言。

作为一款纯粹以自由软件方式推广的程序设计语言,Python的语法简洁清晰,简单易用。虽然完整地支持面向对象程序设计的方方面面,但是Python并不强制程序设计人员采用面向对象的编程方式,而是可以自由地选择结构化面向过程的编程方式,也可以混合使用面向对象和面向过程的编程方式。虽然我们并不鼓励这么做,但是从这个方面足以说明Python语言的灵活性和柔韧性。再加上Python语言丰富和强大的链接库,涉及面之广令人赞叹,其中包括最新的领域——大数据分析、人工智能、机器学习、证券金融市场的量化交易等,这使它具有招牌式的第三个特性——黏合性。除了Python自由软件团体开发的各种程序和模块外,Python语言还可以把其他语言制作的各种模块轻松地“黏合”在一起,这就是它被称为“胶水语言”的黏性之源。正因为这些特性,所以不但信息产业的专业人员在使用Python语言,而且越来越多的计算机人群开始使用Python语言提高自己运用计算机的能力。行内人士见面的问候语以后也许会变成“你Python了吗?”。

本书的编写风格是教材式的,章节的组织结构与行文的叙述方式就是为了不断激发初学者在学习程序设计语言中的“好奇心”和“成就感”,避免“枯燥乏味”“望而却步”,到“勉为其难”,最终到“避之不及”的窘境。本书从一开始就避免陷于程序设计语言的语法纠结和编程注意事项的琐碎细节中,纵观全书,各个章节都是以范例程序为主线的,让学习者在动手实践中轻松掌握如何使用强大的Python语言来解决日常的实际问题。作者在每个章节都精心选择了范例程序,每章的最后还安排和设计了上机实践演练范例程序,它们都和今天主流的网络应用息息相关。例如,图形用户界面程序的设计(范例为简易单词翻译器和简易计算器),以面向对象的方式设计的“选课和退课”程序,调用数学和绘图程序包来绘制直方图,编写网络爬虫程序从公开网站上提取股市行情的数据等,让读者直接体验掌握了一手实战必备技能之后油然而生的成就感。

本书既然是以教材的方式编写的,自然适用于大专院校作为教授程序设计课程的教科书。本书的内容有助于学生在学习程序设计语言的同时拓展程序设计实战能力。对于有意转向Python语言的专业人员来说,本书可以作为学习Python路途中的“北斗星”。

为了强化大家运用Python程序设计语言的动手编程能力,本书在每一章都规划了多个实用的范例程序及上机实践演练,这些精彩的范例程序包括:

·Hello World

·零用钱记账小管家

·成绩单统计小帮手

·密码验证程序不求人

·开放数据的提取与应用

·输出金字塔图形

·简易单词翻译器

·乐透投注游戏程序

·统计历年英语考试中的高频率单词

·用异常处理来控制用户输入的数值

·设计“选课和退课”程序

·用图形用户界面实现简易计算器

·直方图的绘制

·编写网络爬虫程序从公开网站上提取股市行情的数据

本书的范例程序可以登录机械工业出版社华章公司网站(www.hzbook.com)下载,先搜索到本书,然后在页面上的“资料下载”模块下载即可。

另外,对于各类开源项目、程序包和模块等,可以从网站https://pypi.org/获取。当然,它的核心网站为https://www.python.org/,其中的内容更加包罗万象。

本书主要由赵军编著,同时参与编写工作的还有王国春、施研然、王然、孙学南等。如果读者在学习过程中遇到无法解决的问题,或者对本书有意见或建议,可以通过邮箱booksaga@126.com与编者联系。

最后祝大家学习顺利,为Python自由软件社区添砖加瓦,同时让Python语言成为自己职业生涯的“开山之斧”。资深架构师 赵军2019年1月第1章Python简介与建立开发环境

本章是为没有任何程序设计基础的初学者编写的入门章节,也是为想成长为一位Python设计者的读者编写的开篇章节。在本章中,我们将简单介绍Python,并讨论它的特殊应用,而后介绍如何建立Python开发和运行环境。

本章学习大纲

·Python的特色

·程序设计语言简介

·算法概念

·流程图

·Python的应用

·建立Python开发环境

·基本输入与输出

·IPython命令窗口

·Spyder编辑器

·Python程序编写风格

对于未来的高素质人才,程序设计能力是他们必备的基础能力之一。基于这个理念,世界各国都非常重视培养新一代人才的程序设计能力,把具有程序设计能力作为衡量人才的指标之一。具有编程能力不再只是信息科学类专业人员的“专利”,而是将来所有人才都要具有的基本能力。让从自己院校毕业的学生拥有一定的编程能力,已是各个大专院校信息教育普及的主要方向之一,目前在全国范围已经有不少中小学开展了一定程度的程序设计课程。

与其他的传统程序设计语言相比,Python在物联网、数据挖掘与大数据分析以及人工智能领域的应用相当火红,已经达到了“举足轻重”的地位,因而也越来越受科技界的欢迎。技巧

物联网(Internet of Things,IoT)是近年来信息产业中一个非常热门的话题,各种配备了传感器的物品(例如RFID、环境传感器、全球定位系统(GPS)等)与因特网结合起来,并通过网络技术让各种实体对象、自动化设备彼此沟通和交换信息。也就是通过网络把所有东西都连接在一起。

大数据(Big Data)由IBM公司于2010年提出,是指在一定时效(Velocity)内进行大量(Volume)、多样性(Variety)、低价值密度(Value)、真实性(Veracity)数据的获得、分析、处理、保存等操作,主要特性包含5个方面:Volume(大量)、Velocity(时效性)、Variety(多样性)、Value(低价值密度)、Veracity(真实性)。由于数据的来源有非常多的途径,大数据的格式也越来越复杂。

进入云计算(Cloud Computing)时代,可以这么说:没有最好的程序设计语言,只有是否适合的程序设计语言。在统计分析与数据挖掘领域有着举足轻重地位的Python,近年来人气不断飙升,并成为高级程序设计语言排行榜的常胜军,也可以说是现在最流行的机器学习(Machine Learning,ML)语言,不仅可用于执行基本的机器学习任务,而且在网络上可以找到大量的相关资源。技巧“云”其实就泛指“网络”,因为工程师在网络结构示意图中通常习惯用“云朵状”图来代表不同的网络。云计算是指将网络中的计算能力作为一种服务,只要用户可以通过网络登录远程服务器进行操作,就能使用这种计算资源。

机器学习是通过算法来分析数据,在大数据中找到规则,给予计算机大量的“训练数据(Training Data)”,可以发掘多数据元变动因素之间的关联性,进而自动学习并且做出预测,即充分利用大数据和算法来训练机器,机器再从中找出规律,学习如何将数据分类。

Python语言的优点是:面向对象程序设计(Object-Oriented Programming,OOP)、解释执行、跨平台等,加上丰富强大的程序包、模块与免费开放的源码,在各种领域的用户都可以找到符合自己需求的程序包或模块,涵盖网页设计、应用程序设计、游戏设计、自动控制、生物科技、大数据等领域,因此非常适合作为各个行业人员学习程序设计的第一门语言,目前在网络上Python拥有非常活跃的社区及拥戴者。如图1-1所示是TIOBE Software(https://www.tiobe.com/tiobe-index/)在2018年9月公布的世界程序设计语言排行榜,Python的人气指标已升到第3名。图 1-1技巧

面向对象程序设计的核心思想是,将存在于日常生活中随处可见的对象(object)概念应用于软件开发模式(software development model)中。也就是说,OOP让我们在进行程序设计时,采用更生活化、可读性更高的设计概念,所开发出来的程序也更容易扩充、修改及维护。1.1 Python简介

Python的英文原意是蟒蛇(发音/'paΙθn/接近“派森”),但是Python的发明人Guido并不是因为喜欢蟒蛇而取这个名字,按Guido自己的说法是,这个名字取自他个人很喜爱的BBC著名的喜剧电视剧《Monty Python's Flying Circus(蒙提·派森的飞行马戏团)》。虽然Python的名称来源不是大蟒蛇,但是Python软件基金会还是采用了两条蛇作为徽标,如图1-2所示。图 1-2

自从程序设计语言发展到高级语言之后,出现了许多不同类型的程序设计语言,例如C、C++、Java、PHP、JavaScript、C#、Delphi等,它们具有不同的特色,用途也有很大的差异。以C语言为例,它虽然是一种高级语言,但是兼具低级语言的特性,故而有人把C语言称为一种中级语言。UNIX/Linux操作系统就是由C语言开发出来的,它的主要优点有:程序简短精悍、性能高、可直接对内存进行操作和处理。

另外,像Java语言就是参考C/C++特性所开发的程序设计语言,具有跨平台、稳定及安全等特性,主要应用领域为因特网、无线通信、电子商务,Java也是一种面向对象的高级程序设计语言。

Guido开发Python的动机源自于想设计出一种任何人都能轻松使用的通用的高级程序设计语言,就分类上来说,它是一种解释型的动态程序设计语言,不仅优雅简洁,而且具备开发快速、容易阅读、功能强大等优点。同时,Python还融合了多种程序设计语言的风格,采用开放源码的策略,加上Python是用C语言编写的,由于C的可移植性,使得Python能够在任何支持ANSI C编译器的平台运行。

下面列出Python的迷人特点。1.程序代码简洁易读

Python开发的目标之一是让程序代码像读一本书那样容易理解。凭借简单易记、程序代码容易阅读的优点,在编写程序的过程中,让编程者可以专注在程序流程设计本身,而不是时时考虑如何编写程序语句才不容易出错且符合语法,这样就让程序的开发更有效率,团队也更容易协同和整合。图1-3所示为Python简洁的程序代码。图 1-32.跨平台

Python程序可以在大多数主流平台运行,具备在各个操作系统平台之间的高度兼容性和可移植性。无论是Windows、Mac OS、Linux还是移动智能设备的平台(如智能手机),都有对应的Python工具,在https://www.python.org/downloads/下载页面列出了支持各种平台的Python开发工具,如图1-4所示。例如,如果你的个人计算机操作系统使用的是Mac OS或Linux,只要直接在命令行(终端程序)输入python,就可以立即使用Python程序设计语言来设计程序。图 1-43.自由/开放源码

所有版本的Python都是自由和开放源码(Free and Open Source)的,简单来说,我们可以自由地阅读、复制及修改Python的源码,或者在其他自由软件中使用Python程序。4.多范式的程序设计语言

Python具有面向对象的特性,像是类、封装、继承、多态等设计,不过它不像Java这类面向对象语言强迫用户必须采用面向对象的思维来编写程序,Python是具有多范式(Multi-Paradigm)的程序设计语言,允许我们使用多种风格来编写程序,因而Python程序的编写更富有弹性,即使不了解面向对象程序设计的概念,也不会成为我们学习Python语言的障碍。5.扩充能力强的胶水语言

由于Python语言十分容易上手,不但具有作为描述型语言的能力,而且还提供了丰富的应用程序编程接口(API)和可以直接调用的程序包,因而程序设计人员能够轻松地编写扩充模块,也可以把Python程序模块集成到其他语言编写的程序内使用。基于这些原因,也有人将Python语言称为一种胶水语言(Glue Language),意思就是可以把相关功能的程序模块(可能由不同的程序设计语言所编写)如同胶水一样“黏合”在一起。1.2 程序设计语言与程序设计

程序设计语言是一种人类用来和计算机沟通的语言,也就是用来指挥计算机进行计算或运行的指令集合。就如同汉语、英语、日语等语言一样,无论哪一种语言都有词汇与语法。程序设计语言是一行行的程序语句(statement)及语句中的程序代码(code)组合而成的,可以将人类的思考逻辑和沟通的语言转换成计算机能够了解的语言,而“程序设计”就是通过程序设计语言的编写与执行来实现人类运用计算机的工作需求。编写程序可以让原有的工作更有效率,像是每天必须重复做的一些工作,就可以找出其中的规则,编写一个程序来自动执行。1.2.1 程序设计语言简介

每一代程序设计语言都有其特色,无论是哪一种语言都有其专用的语法、特性、优点以及相关应用的领域。从发展过程来看,我们大致可以把程序设计语言分为“低级语言”与“高级语言”两大类,低级语言又可以分为“机器语言”和“汇编语言”。1.机器语言

机器语言(Machine Language)是最早期的程序设计语言,由数字1和0构成,也是计算机能够直接阅读与执行的基础语言,也就是任何程序在执行前实际上都必须转换为机器语言。例如“10111001”可能代表“设置变量A”,而“00000010”代表“数值2”。当我们指示计算机将变量A设置为数值2时,机器语言的写法可能就是:10111001 (设置变量A)00000010 (把数值2设置给变量A)

计算机可以直接执行机器语言,所以执行速度快,在处理数据时效率也高,但是对于人类而言,机器语言可读性低,不太容易学习。另外,对于不同的计算机制造商,往往因为计算机硬件设计的不同而开发不同的机器语言。这样机器语言不但使用不方便,可读性低,也不容易维护,并且不同机器的系统平台,它们的编码方式不尽相同。2.汇编语言

汇编语言(Assembly Language)的指令比机器语言的指令直观多了,但它的指令与机器语言的指令仍然是一对一的对应关系,因而与机器语言一样被归类为低级语言(Low-Level Language)。汇编语言和机器语言相比,更方便人类记忆与使用。由于汇编语言与硬件有着密切的关系,不同CPU(中央处理单元,或称为中央处理器)或微处理器的指令集是不同的,语法也不相同,程序设计人员除了要对指令相当了解之外,还必须熟悉硬件,每一种系统的汇编语言都不一样。以PC为例,使用的是80x86的汇编语言。采用汇编语言所编写的程序,计算机无法直接识别,必须通过汇编程序或汇编器(Assembler)将指令转换成计算机可以识别的机器语言。例如MOV指令代表设置变量的值、ADD指令代表加法运算、SUB指令代表减法运算: MOV A , 2 (把变量A的值设置为2) ADD A , 2 (将变量A加上2后,将结果再存回变量A中,如A=A+2) SUB A , 2 (将变量A减掉2后,将结果再存回变量A中,如A=A-2)3.高级语言

由于低级语言不易阅读,为了能更方便、快速地使用程序设计语言,因此产生了更接近人类自然语言的程序设计语言,这类语言称为高级语言(High-Level Language)。高级程序设计语言比低级程序设计语言更易于看懂和理解。例如Python、Fortran、COBOL、Java、Basic、C、C++都是高级语言中的一员。一个用高级语言编写而成的程序必须经过编译程序(Compiler,或称为编译器)“翻译”为计算机能解读的机器语言程序,也就是可执行文件,其中包含的是编译型的高级语言被转换为计算机可以识别的机器语言的程序代码,只有这种代码才能被计算机执行(其实是被计算机中的CPU执行)。对于解释型的高级语言,需要解释程序(Interpreter,或称为解释程序)“解释”成机器语言才能被计算机的CPU执行,只是不会生成含有机器语言的最终可执行文件,这一点和编译型语言不一样。相对于汇编语言,高级语言虽然执行速度较慢,但语言本身易学易用,因此被广泛应用在商业、科学、教学、军事等相关领域的软件开发中。技巧

编译型语言与解释型语言的不同

编译型语言会先使用编译程序检查整个程序,完全没有语法错误之后,再链接相关资源生成可执行文件(executable file)。一旦经过编译,所生成的执行文件在执行过程中不必再次编译,因此执行效率较高,例如C、C++、PASCAL、Fortran、COBOL等都属于编译型语言。

解释型语言是使用解释器对程序代码一边解读源代码,一边执行,每“解释”完一行程序代码并执行,再继续“解释”下一行程序代码。在解释过程中,如果发生语法错误,解释的过程就会立刻停止,例如HTML、JavaScript、Python等都属于解释型语言。4.非过程性语言“非过程性语言”(Non-Procedural Language)也称为第四代语言(Fourth Generation Language,4GL),特点是它的指令和程序真正执行的具体步骤没有关联。程序设计人员只需将自己打算做什么表示出来即可,而不必去管计算机如何执行,也不需要理解计算机的具体执行步骤。目前,这种语言通常应用于各种类型的数据库系统中,如医院的门诊系统、学生成绩查询系统等,像数据库的结构化查询语言(Structural Query Language,SQL)就是一种第四代语言。例如,清除数据的程序相当简单,代码如下:DELETE FROM employees WHERE employee_id = 'C800312' AND dept_id = 'R01';5.人工智能语言

人工智能语言被称为第五代语言,或自然语言(Natural Language),它是程序设计语言发展的终极目标,当然按目前的计算机技术尚无法实现,因为自然语言用户的口音、使用环境、语言本身的特性(如一词多义)等都会造成计算机在解读时产生不同的结果。所以自然语言必须有人工智能(Artificial Intelligence,AI)技术的发展作为保障。1.2.2 算法与程序设计

算法(Algorithm)是学习程序设计的核心知识。在日常生活中,每个人每天都会用到一些算法,而算法是人类使用计算机解决问题的技巧之一,其实算法并不仅仅用于计算机领域,在数学、物理等领域广泛应用。日常生活中有许多工作都可以使用算法来描述,例如员工的工作报告、宠物的饲养过程、厨师准备美食的食谱、学生的课程表等。在网络搜索引擎大行其道的今天,我们每天要使用的搜索引擎都必须通过不断更新算法来不断提高搜索的速度和准确度。如图1-5所示为百度搜索引擎的基本使用界面。图 1-5

从程序设计语言实现的角度来看,无论我们采用哪一种程序设计语言,程序能否高效地完成任务,算法都是解决问题的核心。同样一个问题,每个人的解法可能不同,程序的执行效率也会不同,优秀的算法能够以最精简的程序代码达到上佳的程序执行效率。

在韦氏辞典中将算法定义为:“在有限的步骤内解决数学问题的过程。”如果运用在计算机领域中,我们也可以把算法定义成:“为了解决某一个问题或完成一项任务,所需的有限次数的重复性指令与计算步骤。”认识了算法的定义后,我们来说明一下算法必须符合的5个条件,如表1-1所示。表 1-1

认识了算法的定义与条件后,接下来要思考:用什么方法来表达算法最为适当呢?其实算法的主要目的在于让人们了解所执行工作的流程与步骤,只要能清楚地体现算法的5个条件即可。算法常用的描述方式或工具如下。

·文字描述:使用中文、英文、数字等来说明算法的步骤。

·伪语言(Pseudo-Language):接近高级程序设计语言的写法,也是一种不能直接放进计算机中执行的语言。一般需要一种特定的预处理器(preprocessor),或者人工编写转换成真正的计算机语言,经常使用的有SPARKS、PASCAL-LIKE等语言。

·流程图(Flow Diagram):是一种以一些图形符号来描述算法执行流程的工具。例如,请用户输入一个数字,然后判断这个数字是奇数还是偶数,描述这个算法的流程图如图1-6所示。图 1-6

·程序设计语言:目前算法也可以直接以可读性高的高级语言来描述,例如Visual C#、Java、Python、Visual Basic、C、C++等语言。在本书中,将以Python语言来描述算法。技巧

算法和过程(procedure)有何不同?与流程图又有什么关系?

算法和过程是有区别的,因为过程不一定要满足有限性的要求,如操作系统或计算机上运行的一些过程。除非宕机,否则永远在等待循环中(waiting loop),这就违反了算法五大原则之一的“有限性”。

另外,只要是算法都能够使用流程图来描述,但反过来,过程的流程图可以包含无限循环,所以过程无法用算法来描述。

为了便于程序的编写,将算法通过流程图来描述是目前最普遍的方式。下面我们来看看流程图的用法。1.2.3 流程图

流程图是使用图形符号来描述解决问题的步骤,绘制流程图有助于程序的修改与维护。特别是当不同的程序开发人员编写程序时,通过流程图可以快速了解程序的流程,有助于协同合作开发程序以及程序的移交工作。流程图有很多种类型,程序开发最常用的是“系统流程图”和“程序流程图”。

系统流程图(system flowchart)用来描述系统的完整流程,包含信息流以及操作流程,即人员、设备、各个部门之间的业务关系。例如,在大学里学生请假可能会经过一些审核流程,通过系统流程图就能清楚地了解完整的审核流程,如图1-7所示。

而程序流程图(program flowchart)用来描述程序的逻辑架构,从程序流程图可以看出程序内的各种运算及执行顺序。例如,求1+2+3+4+5的算法,可以绘制成如图1-8所示的程序流程图。图 1-7图 1-8

为了流程图的可读性和一致性,目前通用ANSI(美国国家标准协会)制定的统一图形符号,表1-2简单说明一些常见的符号。表 1-21.2.4 程序设计流程简介

所谓程序,是由合乎程序设计语言的语法规则的指令所组成的,而程序设计的目的是通过程序的编写与执行来实现用户的需求。或许各位读者认为程序设计的主要目的只是“运算”出正确的结果,而忽略了执行的效率或者日后维护的成本,这其实是不清楚程序设计的真正意义。

至于程序设计时选择哪一种程序设计语言,通常可根据主客观环境的需要决定,并无特别规定。一般评断程序设计语言好坏考虑以下4个方面的因素。

·可读性(Readability)高:阅读与理解都相当容易。

·平均成本低:成本考虑不局限于编码的成本,还包括执行、编译、维护、学习、调试与日后更新等成本。

·可靠度高:所编写出来的程序代码稳定性高,不容易产生边界效应(Side Effect)。

·可编写性高:针对需求编写程序相对容易。

对于程序设计领域的学习方向而言,无疑就是以高效、可读性高的程序设计为目标。一个程序的产生过程可分为以下5个设计步骤(见图1-9)。(1)需求(requirements):了解程序所要解决的问题是什么,有哪些输入和输出等。(2)设计规划(design and plan):根据需求选择适合的数据结构,并以某种易于理解的表示方式写一个算法以解决问题。(3)分析讨论(analysis and discussion):思考其他可能适合的算法和数据结构,最后选出最适当的一种。(4)编写程序(coding):把分析的结果写成初步的程序代码。(5)测试检验(verification):最后必须确认程序的输出是否符合需求,这个步骤需分步地执行程序并进行许多相关的测试。图 1-91.3 Python的应用

Python应用的领域十分广泛,除了本身拥有功能完备的标准函数库之外,也可以加入第三方的函数库。再加上Python拥有庞大的开放式资源网上社区,世界各地的社区人群也会定期举办聚会,彼此交流,精益求精。Python的应用可以说是无所不及,看到如此广泛的应用,相信可以激发大家的学习动力。1.3.1 Web开发框架

Web程序开发包括前端与后端技术,仅仅是前端就有HTML、JavaScript以及CSS等技术,后端技术更多。Web框架简单来说就是为建立Web应用制定了一套规范,简化了所有技术上的细节,只要运用Web框架(Web Framework)模块就可以轻松构建出实用的动态网站。在Python领域,知名的Web框架有Django、CherryPy、Flask、Pyramid、TurboGear等。图1-10所示是Django Web开发框架官方网站的首页(https://www.djangoproject.com/)。图 1-10技巧

JavaScript:一种解释型的描述语言,是在客户端(浏览器)“解释”程序代码,内嵌在HTML语法中,当浏览器解析HTML文件时,就会解释JavaScript语法并执行。JavaScript不仅可以让我们“随心所欲”地控制网页的界面,也可以让我们与其他技术搭配实现更多的应用。

Cascading Style Sheets(CSS):一般称为层叠样式表,其作用主要是为了加强网页上的排版效果(图层也是CSS的应用之一),可以用来定义HTML网页上对象的大小、颜色、位置与间距,甚至可以为文字、图片加上阴影等功能。1.3.2 数字科技集成开发

信息技术(Information Technology,IT)不断进步,数字化应用从日常生活到工作处处可见,各种设备与因特网、移动网络紧密融合,甚至有人大胆预测,未来10年内,许多工作将会被机器人所取代。在各种数字化应用技术中,“大数据分析”“物联网”和“人工智能”是最受关注的领域。Python有各种易于扩展的数据分析与机器学习模块库(Library),比如NumPy、Matplotlib、Pandas、Scikit-Learn、SciPy、PySpark等,让Python成为数据分析与机器学习的主要程序设计语言之一。

下面大家一起来认识“物联网”“大数据分析”和“人工智能”这些应用领域。1.物联网

物联网(Internet of Things,IOT)是近年来信息产业中一个非常热门的话题,物联网这个概念最早是由学者Kevin Ashton在1999年提出的,是让生活中的物品能通过互联互通的传输技术进行传感、感知与控制。例如,智能家电可以让用户从远程通过移动应用程序(App)操控电冰箱、空调等电器,这种远程遥控还可以让电器自动调节。又例如,RFID、环境传感器、全球定位系统(GPS)、激光扫描仪等种种设备与因特网结合起来,形成一个巨大的网络系统,全球所有的物品都可以通过网络主动交换信息,通过因特网技术让各种实体对象、自动化设备彼此沟通和交换信息,渐渐让现代人的生活进入一个始终连接(Always Connect)的网络时代,其最终的目标是要打造一个先进的智慧城市。

近年来,一些百货公司、便利商店使用的iBeacon技术也是物联网的应用之一,商家只要在店内部署多个Beacon设备,运用机器学习技术对消费者进行观察,卖场不只是提供产品,更应该与消费者互动,一旦顾客进入信号覆盖区域,就能够通过手机上应用程序对不同顾客进行精准的“个性化”分众营销,提供“最适性”服务的体验。由于iBeacon的覆盖范围较小,因此也有人把这样的技术应用称为微定位(micro-location)。技巧

Beacon是一种低功耗蓝牙技术(Bluetooth Low Energy,BLE),借助室内定位技术的应用,可作为物联网和大数据平台的小型串接设备,具有主动推送营销应用的特性,比GPS有更精准的微定位功能,可运用于室内导航、移动支付、百货导购、人流分析以及物品追踪等邻近的感知应用。

5G时代即将来临,它将带动数字串流飞速地改变整个产业的面貌,物联网概念将为全球消费市场带来新冲击。在我们的生活当中,已经有许多领域集成了物联网的技术与应用,例如医疗看护、公共安全、环境保护、政府工作、家居安防、空气污染监测、泥石流监测等领域。物联网提供了远距医疗系统发展的基础技术,当有患者生病时,通过智能手机或特定终端测量设备,将各种发病症状传到医院的系统中,自动进行对比与分析,提出初步治疗方案,以避免病症加重。另外,Python在Arduino与Raspberry Pi的支持之下,也可以控制硬件,打造各种物联网应用。图1-11所示为Arduino UNO开发板,大小约5.3cm×6.8cm,常用来开发各种传感器或物联网应用。图 1-112.大数据分析

物联网的另一种应用是搜集数据并加以分析,进而对用户的行为或环境进行感知与预测。这些收集的数据通常相当巨大,也被称为“海量数据”或“大数据”(Big Data),这些数据必须经过整理分析才能变成有用的信息,因此造就了目前炙手可热的“大数据分析”技术。如图1-12所示为一个大数据应用的例子,京东商城借助大数据技术推荐食品给消费者。图 1-12

阿里巴巴创始人马云在德国CeBIT开幕式上如此声明:“未来的世界,将不再由石油驱动,而是由数据来驱动!”近年来,由于社交网站和移动设备风行,加上万物互联的时代无时无刻地产生大量的数据:用户“疯狂”通过手机、平板电脑、计算机等在社交网站上分享大量信息,数据成长的速度越来越快、种类越来越多。面对不断扩张的惊人数据量,大数据的存储、管理、处理、搜索、分析等处理数据的能力面临新的挑战,也为各个产业的运营模式带来新契机。国内外许多拥有大量顾客数据的科技龙头企业,像腾讯、百度、Facebook、Google、Twitter等,纷纷从中嗅到了商机。

例如,百度地图或谷歌地图(Google Maps)导航能在驾车人员进入堵车路段之前提醒驾驶人员,并找出最快的替代路线,提供这个服务的基础是大量使用Android操作系统手机的用户在道路上行驶,这种应用能实时收集用户的位置和速度,经过大数据分析就能快速又准确地为用户提供实时的交通信息。如图1-13所示为百度地图导航应用的一个例子。图 1-133.人工智能

近几年,人工智能的应用领域越来越广泛。人工智能的概念最早是由美国科学家John McCarthy于1955年提出的,目标是使计算机具有类似人类学习解决复杂问题与展现思考等的能力,模拟人类的听、说、读、写、看、动作等的计算机技术都被归类为人工智能可能涉及的范围,例如推理、规划、解决问题以及学习等能力。微软亚洲研究院曾经指出:“未来的计算机必须能够看、听、学,并能使用自然语言与人类进行交流。”

尤其在大数据时代,人工智能(Artificial Intelligence,AI)俨然是未来科技发展的主流方向之一,其中主要原因包括GPU加速运算日渐普及,使得并行计算的速度更快且成本更低,我们也因人工智能而享用许多个性化的服务,生活变得更为便利。技巧

什么是图形处理单元(Graphics Processing Unit,GPU)?

GPU是近年来科学计算领域的最大变革,是指以图形处理单元(GPU)搭配微处理器(CPU)的新型计算方式。GPU含有数千个小型且效率更高的处理单元,不但可以有效进行并行计算(Parallel Computing),还可以大幅提升计算性能,借以加速科学、分析、游戏、消费和人工智能的应用。

机器学习(Machine Learning,ML)是人工智能发展相当重要的一环,机器通过算法来分析数据,在海量数据中找到规则,进而自动学习并且做出预测。2010年后,机器学习技术之一的深度学习(Deep Learning,DL)算法将人工智能推向类似人类学习模式的更高级阶段。深度学习是人工智能(AI)的一个分支,也可以看成是具有层次性的机器学习,源于类神经网络(Artificial Neural Network)模型,并且结合了神经网络结构与大量的计算资源,目的在于让机器建立模拟人脑进行学习的神经网络,以解释大数据中的图像、声音和文字等多种数据,例如可以代替人们进行一些日常的选择和采购,或者在茫茫“网络海洋”中,独立找出分众消费的营销数据。技巧

类神经网络是模仿生物神经网络的数学模式,取材于人类大脑结构,研究的基础是:使用大量简单而相连的人工神经元(Neuron)组成类神经网络来模拟生物神经细胞受到一定程度的刺激后如何响应刺激。由于类神经网络具有高速计算、记忆、学习以及容错等能力,因此可以使用一组范例,通过神经网络模型构造出系统模型,以便用于评估、推理、预测、决策、诊断等的相关应用。

通过深度学习的应用,机器正在变得越来越聪明,不但会学习,而且会进行独立“思考”,人工智能的运用也更加广泛。深度学习包括建立和训练一个大型的人工神经网络,可协助计算机理解图像、声音和文字等数据。最令人津津乐道的深度学习应用当属Google Deepmind开发的人工智能围棋程序AlphaGo,它接连大败全世界的围棋高手。AlphaGo的设计除了输入大量的棋谱数据外,还设计精巧的深度神经网络,通过深度学习掌握更抽象的概念,让AlphaGo学习下围棋的方法,接着就能判断棋盘上的各种情况,后来创下了连胜60局的佳绩,AlphaGo还能不断反复与自己比赛来调整神经网络。Google Deepmind官网首页如图1-14所示。图 1-141.4 建立Python开发环境

与一般的程序设计语言一开始要准备非常复杂的运行环境不同,运行Python程序非常容易,在设计程序的过程中,为了加快开发速度与减少重复开发的成本,可以使用现成的程序包或模块,但是各个程序包与Python版本的兼容性是个很大的问题,经常给初学者带来许多学习的困扰。下面将以Anaconda程序包进行安装,这是一个可用于Linux、OS X和Windows的专业级的Python程序包,它包含Python常用的程序包,甚至包含大家日后可能会用到的机器学习所需的完整程序包。1.4.1 下载Anaconda程序包

Anaconda程序包具有以下特点,是初学者安装Python运行环境的首选:(1)包含许多常用的数学科学、工程、数据分析方面的Python程序包。(2)免费而且开放源代码。(3)支持Windows、Linux、Mac平台。(4)支持Python 2.x和Python 3.x,而且可以自由切换。(5)内建Spyder编译器。(6)包含Conda以及Jupyter Notebook环境。

Conda是环境管理的工具,除了可以管理和安装新的程序包外,还能快速建立独立的虚拟Python环境。我们可以在虚拟的Python环境中安装程序包及测试程序,而不用担心影响原来的工作环境。Jupyter Notebook编辑器是Web扩充程序包,让用户可以通过浏览器开启网页服务,并在上面进行程序的开发与维护。下面我们下载并安装Anaconda。

步骤01 下载网址:https://www.anaconda.com/download。进入网页之后,请根据操作系统选择适当的下载入口,这里有用于Windows、Mac以及Linux操作系统的版本可供选择,如图1-15和图1-16所示。图 1-15图 1-16

步骤02 选择下载的Python版本。我们下载的是Python 3.6、64位的Windows版本,如图1-17所示。下载完成后会看到文件名为Anaconda3-5.2.0-Windows-x86_64.exe的可执行文件。图 1-171.4.2 安装Anaconda

步骤01 双击可执行安装文件即可启动Anaconda安装程序,按序单击“Next”按钮执行安装过程。当出现如图1-18所示的版权声明界面时,阅读版权说明之后单击“I Agree”按钮(表示同意),随后进行下一步。图 1-18

步骤02 出现选择安装类型的界面时,建议采用默认选项,只安装Anaconda供自己使用,再单击“Next”按钮以继续,如图1-19所示。图 1-19

步骤03 设置安装目录,不更改默认的安装目录的话,可直接单击“Next”按钮。笔者选择安装到D盘的指定目录,如图1-20所示。图 1-20

步骤04 选择第二个复选框,再单击“Install”按钮,如图1-21所示。图 1-21

步骤05 出现如图1-22所示的界面即表示安装完成了,继续单击“Next”按钮。图 1-22

步骤06 单击“Finish”按钮退出安装程序,如图1-23所示。图 1-23

步骤07 安装完成之后,在Windows的“开始”菜单出现如图1-24所示的Anaconda3选项(以Windows 10操作系统为例)。图 1-241.5 Python编写工具

Python运行环境安装好之后,就可以准备编写Python程序了。Python语言相当简单易学,往往简单的几行程序语句就可以满足应用程序的多样化功能,我们可以直接通过Windows命令提示符窗口或启动Spyder编辑器来编写程序。1.5.1 “命令提示符”窗口

我们可以在Windows的“开始”菜单的“搜索”文本框中输入“cmd”,然后按Enter键,或者从程序的最佳匹配中单击“命令提示符”选项,启动“命令提示符”窗口,如图1-25所示。图 1-25“命令提示符”窗口是通过输入文字指令的方式来操作计算机的。“命令提示符”窗口习惯上被称为Command Line(命令行)、Console(控制台)、Terminal(终端),或者直接被称为DOS窗口。在Windows中,命令提示符的提示字符是“>”号,闪烁的光标就是输入指令的地方。我们选择启动Anaconda对应的命令提示符窗口“Anaconda Prompt”,启动后的窗口如图1-26所示。图 1-26

在提示字符之后输入“python”,按Enter键后,就会进入Python控制台。当提示字符变成“>>>”之后,就表示我们已经成功进入Python控制台,在这里只能使用Python的指令,如图1-27所示。如果想要退出Python运行环境,只要输入“exit()”再按Enter键就可以了。图 1-27

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载