新書推薦:
《
同工异曲:跨文化阅读的启示(修订版)(师承钱锺书先生,比较文学入门,体量小但内容丰,案例文笔皆精彩)
》
售價:NT$
199.0
《
牛津立法研究手册
》
售價:NT$
1630.0
《
制度为什么重要:政治科学中的新制度主义(人文社科悦读坊)
》
售價:NT$
290.0
《
梦醒子:一位华北乡居者的人生(1857—1942))(第2版)
》
售價:NT$
340.0
《
啊哈!原来如此(中译本修订版)
》
售價:NT$
290.0
《
部分识别入门——计量经济学的创新性方法
》
售價:NT$
345.0
《
东野圭吾:变身(来一场真正的烧脑 如果移植了别人的脑子,那是否还是我自己)
》
售價:NT$
295.0
《
严复与福泽谕吉启蒙思想比较(王中江著作系列)
》
售價:NT$
750.0
|
編輯推薦: |
? 彰显计算思维 语言艺术 工程规范的程序设计教育理念。
? 概念力求精准,突出思想性、启发性、本质性。
? 结构力求严谨、紧凑,便于知识总结、梳理。
? 例题力求经典,例程力求简短,便于阅读、理解。
? 素材力求丰富,创造一个良好的知识建构环境和后期学习参考。
? 习题力求丰富、多样,减轻教师开发题目的负担。
? 零起点、轻松入门、螺旋式深入,适合不同层次的教学。
? 以Python 3.6.1为蓝本,例程多在IDLE界面上调试,以便初学者快速掌握Python语法。
|
內容簡介: |
本书是高等学校Python基础课程的教材。全书由7个单元组成。第1单元介绍Python的基本知识,内容包括Python的特点、数据对象、变量、输入输出等,使读者对Python有一个初步了解;第2单元为Python程序结构,内容包括选择结构、循环结构、函数、模块、异常处理等;第3单元为容器,内容包括序列容器、无序容器、迭代器、生成器与推导表达式;第4单元为面向类的程序设计,内容包括类与对象、类与对象的通用属性与操作、类的继承;第5单元为Python数据处理,内容包括文件操作、数据库操作、文件与目录管理;第6单元为Python网络编程,内容包括Python Socket编程、Python WWW应用开发;第7单元为Python GUI开发,内容包括GUI三要素、GUI程序结构、GUI制作示例。 本书力求内容精练、概念准确、代码便于阅读、习题丰富全面、适合教也容易学。为了便于初学者很快能使用以丰富的模块支撑的Python环境,书后给出了Python运算符、Python内置函数、Python标准模块库目录和Python 3.0标准异常类结构。 本书适合作为高等学校零基础开设Python课程的教材,也适合作为程序设计爱好者和有关专业人员学习的参考书。
|
目錄:
|
目录
第1单元 Python起步 1
1.1 程序设计语言与Python 1
1.1.1 计算机程序设计语言 1
1.1.2 高级程序设计语言分类 3
1.1.3 Python及其特点 6
1.1.4 Python模块与脚本文件 8
练习1.1 11
1.2 Python数值对象类型 12
1.2.1 Python数据类型 12
1.2.2 Python内置数值类型 13
1.2.3 Decimal和Fraction 15
练习1.2 16
1.3 Python数据对象、变量与赋值 17
1.3.1 Python可变对象与不可变对象 17
1.3.2 Python变量与赋值操作 18
1.3.3 Python垃圾回收与对象生命期 21
1.3.4 Python标识符与保留字 22
练习1.3 23
1.4 数值计算万能计算器 24
1.4.1 内置算术操作符与算术表达式 24
1.4.2 内置数学函数 27
1.4.3 math模块 29
练习1.4 31
1.5 输入与输出 32
1.5.1 回显与print函数的基本用法 32
1.5.2 转义字符与print函数的格式控制 33
1.5.3 input函数 37
练习1.5 37
第2单元 Python程序结构 38
2.1 命题与判断 39
2.1.1 布尔类型 39
2.1.2 比较表达式 39
2.1.3 逻辑表达式 40
2.1.4 身份判定操作 43
练习2.1 43
2.2 选择结构 45
2.2.1 if-else型选择结构 45
2.2.2 if-else嵌套与if-elif选择结构 47
练习2.2 49
2.3 循环结构 50
2.3.1 while语句 51
2.3.2 for语句 52
2.3.3 循环嵌套 54
2.3.4 循环中断与短路控制 56
2.3.5 穷举 59
2.3.6 迭代 61
2.3.7 确定性模拟 66
2.3.8 随机模拟与random模块 68
练习2.3 71
2.4 函数 73
2.4.1 函数调用、定义与返回 73
2.4.2 基于函数的变量作用域 77
2.4.3 函数参数技术 79
2.4.4 函数标注 83
2.4.5 递归 84
2.4.6 lambda表达式 88
练习2.4 89
2.5 程序异常处理 92
2.5.1 异常处理的基本思路与异常类型 93
2.5.2 try-except语句 94
2.5.3 控制异常捕获范围 96
2.5.4 else子句与finally子句 96
2.5.5 异常的人工显式触发:raise与assert 97
练习2.5 98
第3单元 容器 100
3.1 序列容器 100
3.1.1 序列对象的构建 100
3.1.2 序列通用操作 102
3.1.3 列表的个性化操作 108
3.1.4 字符串的个性化操作 111
3.1.5 字符串编码与解码 114
3.1.6 字符串格式化与format方法 116
3.1.7 正则表达式 119
练习3.1 125
3.2 无序容器 129
3.2.1 字典 129
3.2.2 集合 132
练习3.2 135
3.3 迭代器、生成器与推导表达式 138
3.3.1 迭代器 138
3.3.2 生成器 139
3.3.3 推导表达式 144
练习3.3 147
第4单元 面向类的程序设计 150
4.1 类及其组成 150
4.1.1 类模型及其语法 150
4.1.2 类对象、实例对象与__init__ 方法 152
4.1.3 最小特权原则与对象成员访问限制 155
4.1.4 实例方法、静态方法与类方法 158
练习4.1 159
4.2 Python内置的类属性、方法与函数 161
4.2.1 内置的类属性 161
4.2.2 获取类与对象特征的内置函数 162
4.2.3 操作符重载 166
4.2.4 可定制的内置方法 168
练习4.2 176
4.3 类的继承 178
4.3.1 类的继承及其关系测试 178
4.3.2 新式类与object 180
4.3.3 子类访问父类成员的规则 182
4.3.4 子类实例的初始化与super 182
练习4.3 187
第5单元 Python数据处理 190
5.1 Python文件操作 190
5.1.1 文件对象及其操作过程 190
5.1.2 文件打开函数open 192
5.1.3 文件属性与方法 195
5.1.4 文件可靠关闭与上下文处理器 196
5.1.5 二进制文件的序列化读写 197
5.1.6 文件指针位置获取与移动 200
练习5.1 200
5.2 Python数据库操作 203
5.2.1 数据库与SQL 203
5.2.2 用pyodbc访问数据库 207
5.2.3 SQLite3数据库 213
练习5.2 215
5.3 文件与目录管理 216
5.3.1 文件和目录管理(os模块和os.path模块) 217
5.3.2 文件压缩(zipfile模块) 219
5.3.3 文件复制(shutil模块) 221
练习5.3 221
第6单元 Python网络编程 222
6.1 Python Socket编程 222
6.1.1 TCPIP与Socket 222
6.1.2 socket模块与socket对象 226
6.1.3 TCP的Python Socket编程 228
6.1.4 UDP的Python Socket编程 231
练习6.1 232
6.2 Python WWW应用开发 235
6.2.1 WWW及其关键技术 235
6.2.2 urllib模块库 241
6.2.3 urllib.parse模块与URL解析 242
6.2.4 urllib.request模块与网页抓取 244
6.2.5 网页提交表单 247
6.2.6 urllib.error模块与异常处理 248
6.2.7 webbrowser模块 249
练习6.2 250
第7单元 Python GUI开发 252
7.1 GUI三要素:组件、布局与事件处理 252
7.1.1 组件与tkinter 252
7.1.2 布局与布局管理器 256
7.1.3 事件绑定与事件处理 259
练习7.1 263
7.2 GUI程序结构 265
7.2.1 基于tkinter的GUI开发环节 265
7.2.2 面向对象的GUI程序框架 268
练习7.2 270
7.3 GUI制作示例 270
7.3.1 Label与Button 270
7.3.2 Entry与Message 276
7.3.3 Text与滚动条 280
7.3.4 选择框 287
7.3.5 菜单 293
练习7.3 296
附录A Python运算符 297
附录B Python内置函数 301
附录C Python标准模块库目录 307
附录D Python 3.0标准异常类结构(PEP 348) 316
参考文献 318
V
|
內容試閱:
|
前 言
(一)
在多年从事C语言、C和Java教学工作中,少不了有学生要求解释如funi ,i 这样的问题。有时,到外校进行学术交流时,也不乏同行教师问到这个问题。我感觉,能问到这个问题的学生,无疑是好学生。因为,这个问题虽小,但要解释清楚它,需要涉及非定义行为、赋值表达式的副作用、序列点、程序设计风格等方面的概念,这些概念在相关教材中几乎不见提到,许多教师也不清楚。更让我吃惊的是,当我给一位从事了30多年C与C教学的大学副教授讲赋值表达式的副作用时,他竟然回了我一句:我不这样认为。这足以说明问题的严重性了。
实际上,与其说是赋值操作的副作用,不如说是变量的副作用。这似乎是一个不可逾越的鸿沟。因为值的变化是变量的基本性质。然而,这个问题在Python中被解决了,因为它的数据多数属于不可变类型。对于不可变类型的变量赋值,就成为引用指向另外一个对象了。这确实是Python的一大突破。Python有许多让人耳目一新的特点,正是这些特点,使它得到了快速推广,并赢得广泛的支持。
2017年7月19日,IEEE(美国电气电子工程师学会)出版的旗舰杂志IEEE Spectrum发布了第4届顶级编程语言交互排行榜。这个排行榜由读者需求、用户增速、开源、设计自由度、雇主需求5个子排行榜组成。其中,前4个子排行榜中都是Python力压群雄,只有雇主需求一榜位于C和Java之后,排名第三。图1为IEEE Spectrum 2017 编程语言 Top 10 排名情况。
图1 IEEE Spectrum 2017编程语言Top 10排名情况
据 IEEE Spectrum介绍,这个排行依据数据记者 Nick Diakopoulos 提供的数据,结合 10 个线上数据源的 12 个标准,对 48 种语言进行了排行。因为不可能顾及每一个程序员的想法,IEEE Spectrum使用多样化、可交互的指标权重来评测每一种语言的现行使用情况。显然,这个排行的客观性、权威性是极高的。
另一个影响极大的程序设计语言排行榜是TIOBE。TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、百度)以及Wikipedia、Amazon、YouTube统计出排名数据,但只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,也不反映就同一算法使用不同语言编写时代码数量多少。表1是其2017年10月发布的Top 10榜单。可以看出,Python虽位居第5,但它有上升趋势,而前4名均有下降趋势。
表1 TIOBE 2017年10月发布的程序设计语言Top 10榜单
2017年10月
2016年10月
变化
编程语言
评级%
变化%
1
1
Java
12.431
-6.37
2
2
C
8.374
-1.46
3
3
C
5.007
-0.79
4
4
C#
3.858
-0.51
5
5
Python
3.803
0.03
6
6
JavaScript
3.010
0.26
7
7
PHP
2.790
0.05
8
8
Visual Basic .NET
2.735
0.08
9
11
Assembly language
2.374
0.14
10
13
Ruby
2.324
0.32
(二)
Python应用广泛,所包含的内容自然也十分广泛。但是作为关于Python的基础教程,不可能把所有内容都包含进来,甚至不可能包含较多的内容,内容选择非常重要。作者经过反复斟酌,决定采取以Python核心语法为重心,添加关键性的、基础性的应用型内容。最后,将应用型内容圈定在数据处理、网络编程和GUI设计3个方面,并把全书按照7个单元进行组织。前4个单元为Python的核心语法知识,后3个单元为3个应用 方面。
第1单元介绍Python的基本知识,内容包括Python的特点、数据对象、变量、输入输出等,使读者对Python有初步了解。
第2单元为Python程序结构,内容包括选择结构、循环结构、函数、模块、异常 处理。
第3单元为容器,内容包括序列容器、无序容器、迭代器、生成器与推导表达式。
第4单元为面向类的程序设计,内容包括类与对象、类与对象的通用属性与操作、类的继承。
第5单元为Python数据处理,内容包括文件操作、数据库操作、文件与目录管理。
第6单元为Python网络编程,内容包括Python Socket编程、Python WWW开发。
第7单元为Python GUI开发,内容包括GUI三要素、GUI程序结构、GUI制作 示例。
著名心理学家皮亚杰创建的结构主义,把教师的主要职责定义为为学习者创建学习环境。作为Python教材,本书把附录和习题作为正文之外的两个重要的学习环境。本书的附录包括Python运算符、Python内置函数、Python标准模块库目录和Python 3.0标准异常类结构。
除了语言的内核和内置函数,模块是Python的最大支撑。在Python中,每一项应用都要由相应的模块支持。每一个应用程序的开发都需要按照熟悉领域知识导入相关模块设计相应算法编写相应代码的过程。由于Python开源代码的特点和社区广大热心者的支持,目前Python已经有上千的模块可以利用。读者知道哪些模块可用,不仅可以开阔思路,而且可以浏览这些模块目录得到通向该应用领域的线索。不过,要把这些模块全罗列出来不仅没有必要,也没有可能。这是将Python 3.0标准模块库目录作为附录的原因。虽然仅仅只有29项,但足可以对Python的应用范围画出一个轮廓。
习题也是重要的学习环境。为此本书收集并设计了多种类型的习题,并且在每节后面都给出相应的练习题。本书习题量虽多,却还是无法满足不同的练习需要。希望学习者和使用本书的老师们,不要囿于本书给出的习题,要开发出更多课后练习,开辟更好的Python学习环境。还需要说明的是,不是每一个题目都能直接在正文中找到答案。要找到正确的答案,需要深刻理解基本概念,或需要自己设计一些代码测试分析。这样才能培养出举一反三的能力、创新的能力。
本书所有例题都在Python 3.6.1的交互环境中调试。本书也推荐在Python 3.0的交互环境平台上教学或自学,在交互式环境中学习,有利于立即发现错误和理解错误原因。为便于阅读,文中将系统输出的内容用蓝色印出。其中,蓝色粗体为出错信息(在IDLE中是红色)。
(三)
教材是教学的剧本,是学习的向导。要编写一本好的教材,不仅需要对本课程涉及内容有深刻的了解和感悟,还要熟悉相关领域的知识,更要不断探讨和深化贯穿其中的教学理念和教育思想,写教材是件很难的事情。特别是在不断的写作中,常感到自己知识和能力的不足。由于是已经有了一些想法才开始写作的,又不忍将这些想法隐藏起来,还由于已经得到一些亲朋的支持和鼓励,也不忍辜负他们的一片热情,只能硬着头皮写下去,也幸有他们的帮助,才最后得以完成本书。在本书的写作过程中,赵忠孝教授、姚威博士、张展为博士,以及魏士婧、刘砚秋、张秋菊、史林娟、张有明、戴璐、张展赫、吴灼伟(插图)等参加了有关部分的编写工作,在此谨表谢意。
本书就要出版了。它的出版,是我在这项教学改革工作中跨上的一个新台阶。本人衷心希望得到有关专家和读者的批评与建议,也希望能多结交一些志同道合者,把这本书改得更好。
张基温
丁酉菊月于穗小海之畔??
??
??
??
??
IV
I
|
|