描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302511908丛书名: 高等教育质量工程信息技术系列示范教材
? 概念力求精准,突出思想性、启发性、本质性。
? 结构力求严谨、紧凑,便于知识总结、梳理。
? 例题力求经典,例程力求简短,便于阅读、理解。
? 素材力求丰富,创造一个良好的知识建构环境和后期学习参考。
? 习题力求丰富、多样,减轻教师开发题目的负担。
? 零起点、轻松入门、螺旋式深入,适合不同层次的教学。
? 以Python 3.6.1为蓝本,例程多在IDLE界面上调试,以便初学者快速掌握Python语法。
第1章从模仿计算器进行简单的计算入手,带领读者迈进Python门槛;顺势引导读者掌握Python模块的用法、变量的用法;再进一步引入选择结构和重复结构,使读者有了程序和算法的基本概念,进入程序设计的殿堂。第2章首先介绍Python特有的数据对象与变量之间的关系,然后较详细地介绍了Python各种内置的数据类型。第3章从正常处理和异常处理两个角度介绍Python程序过程的两种基本组织形式:函数和异常处理,并介绍与之相关的名字空间和作用域的概念。第4章把读者从面向过程带到面向类的程序设计,内容包括类与对象、类与对象的通用属性与操作、类的继承。第5章为Python GUI开发,使读者具备开发友好界面程序的能力。 第6章为Python应用开发举例,从数据处理和网络应用两个*基本应用领域,培养读者的应用开发能力。
本书力求内容精练、概念准确、代码便于阅读、习题丰富全面、适合教,也容易学;例子分正反两种,以利正本清源。为了便于初学者很快使用Python以丰富的模块支撑的环境,书后给出了Python内置函数、Python文件和目录管理、Python 3.0标准异常类体系和Python标准模块库目录。
第1章 一个万能计算器 1
1.1 简单算术计算 1
1.1.1 Python算术操作符 1
1.1.2 回显与print() 2
1.1.3 Python表达式计算规则 3
练习1.1 3
1.2 使用内置数学函数计算 4
1.2.1 函数与内置函数 4
1.2.2 Python计算型内置函数对象 4
练习1.2 5
1.3 利用math模块进行计算 6
1.3.1 模块化程序设计与Python模块 6
1.3.2 导入模块或对象 6
1.3.3 math模块中的常量与函数 8
练习1.3 10
1.4 使用变量计算 11
1.4.1 数据对象、变量与赋值 11
1.4.2 几种不同的赋值方式 12
1.4.3 Python标识符与保留字 13
1.4.4 input()函数 14
练习1.4 15
1.5 选择型计算 16
1.5.1 if-else型选择的基本结构 16
1.5.2 选择表达式 17
1.5.3 if-else蜕化结构 18
1.5.4 if-else嵌套 18
1.5.5 if-elif选择结构 19
练习1.5 20
1.6 重复型计算 21
1.6.1 while语句 22
1.6.2 for语句 23
1.6.3 循环嵌套 25
1.6.4 在IDLE中执行功能完整的代码段 27
1.6.5 循环中断语句与短路控制 28
练习1.6 29
1.7 穷举与迭代 30
1.7.1 穷举 30
1.7.2 迭代 32
练习1.7 37
第2章 Python数据对象 40
2.1 Python数据对象的属性 40
2.1.1 Python数据对象的类型 40
2.1.2 Python对象的身份码ID与判是操作 43
2.1.3 可变对象与不可变对象 45
2.1.4 Python数据对象生命期与垃圾回收 46
2.1.5 Python小整数对象池与大整数对象池 49
练习2.1 51
2.2 Python基本数据类型 52
2.2.1 bool类型 52
2.2.2 int类型 56
2.2.3 float类型 58
2.2.4 complex类型 59
2.2.5 Python数据类型转换 60
练习2.2 62
2.3 序列 64
2.3.1 序列对象的构建 64
2.3.2 序列通用操作 66
2.3.3 列表的个性化操作 72
练习2.3 74
2.4 字符串 77
2.4.1 字符串编码与解码 77
2.4.2 字符串的个性化操作 81
2.4.3 字符串格式化与format()方法 83
2.4.4 print()函数的格式控制 86
2.4.5 正则表达式 89
练习2.4 95
2.5 字典与集合 96
2.5.1 字典 96
2.5.2 集合 100
练习2.5 103
2.6 Python数据文件 106
2.6.1 数据文件概述 106
2.6.2 open()函数 107
2.6.3 文件属性与方法 109
练习2.6 110
第3章 Python过程组织与管理 112
3.1 Python函数 112
3.1.1 函数及其关键环节 112
3.1.2 Python函数参数技术 116
3.1.3 Python函数的第一类对象特性 120
3.1.4 函数标注 121
3.1.5 递归 122
3.1.6 lambda表达式 125
练习3.1 125
3.2 Python异常处理 129
3.2.1 异常处理的基本思路与异常类型 129
3.2.2 try-except语句 131
3.2.3 异常类型的层次结构 133
3.2.4 else子句与finally子句 133
3.2.5 异常的人工触发:raise与assert 134
练习3.2 135
3.3 Python命名空间与作用域 136
3.3.1 Python命名空间 136
3.3.2 Python作用域 139
3.3.3 Python名字解析的LEGB规则 144
练习3.3 145
第4章 面向类的程序设计 147
4.1 类及其组成 147
4.1.1 类模型与类语法 147
4.1.2 对象的生成与_ _init_ _ ()方法 150
4.1.3 最小特权原则与成员访问限制 152
4.1.4 实例方法、静态方法与类方法 155
练习4.1 157
4.2 Python类的内置属性、方法与函数 158
4.2.1 类的内置属性 158
4.2.2 获取类与对象特征的内置函数 160
4.2.3 操作符重载 163
4.2.4 Python类属性配置与管理内置方法 166
练习4.2 173
4.3 类的继承 175
4.3.1 类的继承及其关系测试 176
4.3.2 新式类与object 178
4.3.3 子类访问父类成员的规则 180
4.3.4 子类实例的初始化与super 180
练习4.3 185
第5章 Python GUI开发 188
5.1 组件、布局与事件处理 188
5.1.1 组件 188
5.1.2 布局与布局管理器 192
5.1.3 事件绑定与事件处理 195
练习5.1 200
5.2 GUI程序结构 201
5.2.1 基于tkinter的GUI开发环节 201
5.2.2 面向对象的GUI程序框架 204
练习5.2 206
5.3 GUI制作示例 206
5.3.1 Label与Button 207
5.3.2 Entry与Message 213
5.3.3 Text与滚动条 217
5.3.4 选择框 224
5.3.5 菜单 230
练习5.3 233
第6章 Python应用开发举例 234
6.1 Python数据库操作 234
6.1.1 数据库与SQL 234
6.1.2 用pyodbc访问数据库 235
6.1.3 SQLite3数据库 242
练习6.1 244
6.2 Python Socket编程 245
6.2.1 TCP/IP与Socket 245
6.2.2 Socket模块与Socket对象 249
6.2.3 TCP的Python Socket编程 251
6.2.4 UDP的Python Socket编程 254
练习6.2 256
6.3 Python WWW应用开发 258
6.3.1 WWW及其关键技术 258
6.3.2 urllib模块库 264
6.3.3 urllib.parse模块与URL解析 266
6.3.4 urllib.request模块与网页抓取 267
6.3.5 网页提交表单 270
6.3.6 urllib.error模块与异常处理 271
6.3.7 webbrowser模块 272
练习6.3 273
附录 275
附录A Python内置函数 275
A.1 数学运算 275
A.2 逻辑判断 275
A.3 容器操作 276
A.4 字符串相关 276
A.5 类型转换 278
A.6 I/O操作 278
A.7 反射相关 278
A.8 其他 280
附录B Python 3.0标准异常类结构(PEP 348) 280
附录C 文件与目录管理 281
C.1 文件访问函数 281
C.2 目录操作 282
C.3 获取或判断文件和路径属性的函数 282
C.4 路径操作 283
C.5 文件压缩(zipfile模块) 283
C.6 文件复制(shutil模块) 285
附录D Python标准模块库目录 285
D.1 文本 285
D.2 二进制数据 286
D.3 数据类型 286
D.4 数学 286
D.5 函数式编程 286
D.6 文件与目录 286
D.7 持久化 287
D.8 压缩 287
D.9 文件格式化 287
D.10 加密 287
D.11 操作系统工具 287
D.12 并发与并行 288
D.13 进程间通信 288
D.14 互联网相关 288
D.15 HTML与XML 289
D.16 互联网协议与支持 289
D.17 多媒体 290
D.18 国际化 290
D.19 编程框架 290
D.20 Tk图形用户接口 290
D.21 开发工具 291
D.22 调试 291
D.23 运行时 291
D.24 解释器 291
D.25 导入模块 292
D.26 Python语言 292
D.27 其他 292
D.28 Windows相关 292
D.29 UNIX相关 292
参考文献 294
近年来,一种程序设计语言日渐粲然,使许多红极一时的程序设计语言黯然失色,得到人们的空前青睐,使得在学界和业界出现了揭竿而起、应者云集的景象。这种程序设计语言就是Python。本书也想在此时为熊熊燃起的Python烈火再添上一把柴。
(一)
Python之所以能够冉冉升起,在于其鲜明的特色。
Python简单、易学。它虽然是用C语言写的,但是它摒弃了C语言中任性不羁的指针,降低了学习和应用的难度。
Python代码明确、优雅。其代码描述具有伪代码风格,使人容易理解;其强制缩进的规则使得代码具有极佳的可读性。
Python自由、开放。Python是FLOSS(Free/Libre and Open Source Software,自由/开放源码软件)之一。它支持向不同的平台上移植,允许部分程序用应用广泛的C/C 语言编写;它可提供脚本功能,允许把Python程序嵌入C/C 程序中。它还鼓励更优秀者的创造、改进与扩张,因此使其在短短的发展历程中形成异常庞大、几乎覆盖一切应用领域的标准库和第三方库,为开发者提供了丰富的可复用资源和便利的开发环境。
(二)
为了彰显优势,Python博采众长、趋利避害,形成一套独特的语法体系。其中有些语法现象是用别的语言的语法体系解释不清楚的,强行解释反而会误导学者。本书力图正本清源,从基本理论出发,对Python的语法给出一个清晰而本原的概念和解释,以此为基础快速而扎实地将学习者带进Python应用开发中展现才干。
本书共分6章。第1章从初中水平的读者就能懂的计算开始,将读者引进Python 世界。同时,插进一些最基本的语法知识,如输入输出、变量、模块,然后通过选择和循环结构带领读者在简单算法中试水。
第2~4章在第1章的基础上深入浅出地介绍数据类型、面向过程的结构和面向对象的结构。在此期间让学习者进一步理解对象与变量、各种原子类型和内置容器类型、函数、异常处理、名字空间与作用域。
第5、6章是应用开发。第5章为Python UGI开发,第6章为Python应用开发举例。这两章的内容突出了Python应用开发的两个要素:领域知识的了解和相应模块的应用。
(三)
著名心理学家皮亚杰创建的结构主义对教师的主要职责定义是为学习者创建学习环境。教材是为学习者创建的一种学习环境。除正文的内容选择、顺序安排之外,还有例题、练习题和附录。
本书例题力求代码精干,以便读者理解。练习题是以大节为单位进行组织的,并且题型多样,针对性强,便于学习者学习某一节后,立即可以从不同角度进行检测。
鉴于已经出版的多种教材中存在的对Python基本概念解释含混,甚至错误的情况,本书还收集了一些著作中的错误概念作为反例放在相关的习题中,供读者分析、批判,以正本清源,提高读者对Python语法的辨别、理解和应用能力。
本书的附录由四部分组成:Python内置函数、Python 3.0标准异常类结构、文件与目录管理和Python标准模块库目录。这些内容相当于一个常用手册,可以为初学者提供一个继续学习或扩展学习的环境。
(四)
进行编写中,收集并设计了多种类型的习题,并且在每一节后面都给出了相应的练习题。作为Python教材,本书把附录和习题作为正文之外的两个重要的学习环境。本书的附录包括操作符、内置函数、模块目录和异常类结构。这些内容相当于一本简明的应用手册,会给想继续深入并提高自己Python开发能力的学习者提供一个扩展的环境。
这些附录也表明Python开源代码的特点和社区广大热心者的支持,是Python生命力的源泉。虽然目前Python已经有上千种模块可以被利用,而附录中列出的Python 3x的标准模块库仅有20多项,但已足以对Python的应用范围画出一个轮廓。
(五)
在本书出版之前,魏士靖细心进行了代码校验和文字校对,并制作了PPT;吴灼伟设计了书中部分插图;刘砚秋、赵忠孝、姚威、张展为、张秋菊、史林娟、张有明等也参与了部分工作。在此谨表谢意。
本书的出版是我在程序设计教学改革工作中跨上的一个新台阶。本人衷心希望得到有关专家和读者的批评和建议,也希望能多结交一些志同道合者,把本书改得更好一些。
张基温
戊戌初夏于穗小海之畔
程序过程技术是面向过程程序设计的关键技术,也是面向对象程序设计的支撑技术。程序过程由一组指令描述。随着计算机应用的深入,程序代码量急剧增大,复杂性随之膨胀。在这种情况下,如何组织与管理过程关系到程序的可靠性、可测试性、正确性和执行效率。
由于各种原因,程序代码可能会被正常执行,也可能会在执行中出现异常。作为一个健壮的程序,不仅应当正确地执行不出现异常的代码,还应当能执行可能会出现异常的代码,并在异常出现时可以处理异常,即使无法处理,也应该能显示出现了什么问题,不致让用户莫名其妙。
本章介绍Python在正常执行和有可能出现异常两种情况下的过程组织方式,它们分别称为函数和异常处理。在介绍了这两种过程组织结构后,本章还会介绍与它们有关的标识符访问规则——命名空间与作用域规则。
3.1 Python函数
在Python程序中,函数是组织与管理过程的最基本形式。本节介绍Python函数定义、返回、调用中要使用的一些基本技术。
3.1.1 函数及其关键环节
函数(function)技术是程序模块化的产物。程序模块化是一种控制问题复杂性的手段,其基本思想是将一个复杂的程序按照功能进行分解,使每一个模块成为功能单一的代码块封装体,不仅使结构更加清晰,而且大大降低了复杂性和设计难度,并在一定程度上实现了代码复用,有利于提高程序的可靠性、可测试性、可维护性和正确性。
作为承载模块职能的重要机制,函数具有三方面的意义:一是形成一段代码的封装体;二是实现一个功能;三是可以被重复使用。图3.1为函数被重复使用的示意图。
图3.1 函数被重复使用的示意图
作为程序模块化的元件和一段代码的封装体,不仅要求函数之间的关系要清晰可读,而且要求一个函数中,语句之间的关系也要清晰可读。使语句之间关系清晰的方法是采用结构化的语句结构。图3.2为目前广泛采用的3种结构化的基本语句结构。这3种基本语句结构的共同特点是“单入口、单出口”。
图3.2 3种基本程序结构:顺序、选择和循环
许多程序可以用函数作元件构建而成。在用Python进行开发时,可以采用内置的函数,也可以采用标准库中的或第三方社区开发的函数。但它们是有限的,还需要程序员自己设计一些函数。本节介绍有关函数设计的技术。
函数机制包含定义、调用和返回三大环节。图3.3形象地表示了三者之间的关系。
图3.3 函数的定义、调用和返回
1.函数调用
1)函数调用的形式
函数调用是一个表达式,格式为
函数名(实际参数列表)
函数pow(x,y)用来计算xy,定义时并不知道x是多少,y是多少,所以,x和y称为形式参数(formal parameters),简称形参(parameter)。调用这个函数式,必须说明需要计算的x的实际值和y的实际值。例如,计算28时,调用的表达式为pow(2,8),其中2和8称为实际参数(actual parameter),简称实参(argument)。
调用表达式可以单独构成一个语句,如print();也可用来组成别的表达式,如表达式a = pow(2,8)。
2)函数调用的作用
简单地说,函数就是用一个名字代表一段程序代码。所以,函数调用就是通过一个函数名使用一段代码,并且根据需要还要向函数传递一些数据。这些数据的传递通过参数的虚实结合进行。总之,函数调用是通过3个关键性操作完成的。
(1)参数传递。计算机执行程序的流程在当前程序中,当执行到调用表达式时,就会先把函数调用表达式中的实际参数传递给函数定义中的形式参数。例如,用pow(2,8)调用函数会把2传递给x,把8传递给y。
(2)保存现场。由于当前程序没有结束,所以会有一些中间执行结果和状态。为了能在函数返回时接着执行,就要将这些中间执行结果和状态保存起来。不过,这个操作是系统在后台进行的操作,在程序中并不表现出来。
(3)流程转移。将计算机执行程序的流程从当前调用语句转移到函数的第一个语句,开始执行函数中的语句。
需要注意的是,要调用一个模块中的函数,必须先用import将模块导入。
2.函数定义
Python的函数定义结构如下所示,由函数头(function header)和函数体(function body)两部分组成。
def 函数名 (参数列表):
函数体
1)函数头
函数头由关键字def引出,并由函数名及其后面括在圆括号中的零个或多个形式参数变量名称组成。
Python函数名是函数名变量的简称,必须是合法的Python标识符。def是一个执行语句关键字。当Python解释执行def语句后,就会创建一个函数对象,并将其绑定到函数名变量。函数可能需要0个或多个参数。有多个参数时,参数间要用西文逗号(,)分隔。
函数头后面是一个西文冒号(:),表示函数头的结束和函数体的开始。
2)函数体
函数体用需要的Python语句实现函数的功能。这些语句要按照Python的要求缩进。
3)函数嵌套
函数是用def语句定义的,凡是其他语句可以出现的地方,def语句同样可以出现一个函数的内部。这种在一个函数体内又包含另外一个函数的完整定义的情况称为函数嵌套。
评论
还没有评论。