新書推薦:
《
失衡与重塑——百年变局下的中国与世界经济
》
售價:NT$
602.0
《
不被定义的年龄:积极年龄观让我们更快乐、健康、长寿
》
售價:NT$
352.0
《
南方谈话:邓小平在1992
》
售價:NT$
367.0
《
纷纭万端 : 近代中国的思想与社会
》
售價:NT$
500.0
《
中国古代文体形态研究(第四版)(中华当代学术著作辑要)
》
售價:NT$
765.0
《
朋党之争与北宋政治·大学问
》
售價:NT$
454.0
《
甲骨文丛书·波斯的中古时代(1040-1797年)
》
售價:NT$
403.0
《
以爱为名的支配
》
售價:NT$
286.0
編輯推薦:
1.完整丰富的Python编程教程,不仅介绍编程语言本身,还涉及场景实战、错误排查、程序发布等众多实用内容。
2.程序员实用的编程手册。针对多个应用场景给出解决方案,帮助读者有效避免犯错,提高工作效率。
3.内容循序渐进,深入浅出。从Python的基础知识开始,介绍了数据类型、函数、条件、循环等基本概念,展示了生成器、面向对象编程等具有Python特色的进阶理念,并给出了定位和排除异常、测试代码、调试的方法。
4.提供配套代码,易学易用。
內容簡介:
本书是一本全面介绍Python编程,并针对多个应用场景给出解决方案的编程手册。从Python的基础知识开始,介绍了数据类型、函数、条件、循环等基本概念,展示了生成器、面向对象编程等具有Python特色的进阶理念,并给出了定位和排除异常、测试代码、调试的方法。随后,本书针对GUI、数据科学等实用场景,使用Python解决实际问题。最后,本书给出了发布Python程序的方法。 本书适合想要学习编程或有一定编程基础、想要学习Python的人阅读。
關於作者:
Fabrizio Romano于1975年出生于意大利。他获得了帕多瓦大学计算机科学工程的硕士学位。他从1999年开始就成为一名专业的软件开发人员。Fabrizio自2016年起成为Sohonet的产品小组的成员。 Heinrich Kruger于1981年出生于南非。他获得了荷兰乌德勒支大学的计算机科学硕士学位。他从2014年开始成为一名专业的软件开发人员,并从2017年开始加入Sohonet的产品小组,成为Fabrizio的同事。
目錄 :
第 1章 Python概述 1
1.1 编程预备知识 2
1.2 走近Python 3
1.3 关于Python 4
可移植性 4
一致性 4
开发人员的效率 4
广泛的程序库 5
软件质量 5
软件集成 5
满足感和乐趣 5
1.4 Python有什么缺点吗? 5
1.5 当前的Python用户 6
1.6 安装环境 6
1.6.1 Python 2和Python 3 6
1.7 安装Python 7
1.7.1 安装Python解释器 7
1.7.2 关于虚拟环境 9
1.7.3 第 一个虚拟环境 10
1.7.4 安装第三方程序库 12
1.7.5 控制台是我们的好帮手 13
1.8 怎样运行Python程序 13
1.8.1 运行Python脚本 13
1.8.2 在交互式shell中运行Python 14
1.8.3 以服务的形式运行Python 15
1.8.4 以GUI应用程序的形式运行Python 15
1.9 Python代码的组织形式 16
1.9.1 使用模块和程序包 17
1.10 Python的执行模型 18
1.10.1 名称和名字空间 19
1.10.2 作用域 20
1.10.3 对象和类 23
1.11 编写优质代码的指导原则 25
1.12 Python的文化 26
1.13 关于IDE的说明 27
1.14 总结 28
第 2章 内置的数据类型 29
2.1 一切皆是对象 29
2.2 可变还是不可变?这个是
问题 30
2.3 数值 32
2.3.1 整数 32
2.3.2 布尔值 34
2.3.3 实数 35
2.3.4 复数 36
2.3.5 分数和小数 36
2.4 不可变序列 37
2.4.1 字符串和bytes(字节) 37
2.4.2 元组 41
2.5 可变序列 42
2.5.1 列表 42
2.5.2 bytearray(字节数组) 45
2.6 集合类型 46
2.7 映射类型—字典 48
2.8 数据类型 51
2.8.1 日期和时间 52
2.8.2 collections模块 56
2.9 枚举 60
2.10 最后的考虑 60
2.10.1 小值缓存 61
2.10.2 如何选择数据结构 61
2.10.3 关于索引和截取 62
2.10.4 关于名称 63
2.11 总结 64
第3章 迭代和决策 65
3.1 条件编程 65
3.1.1 一种特殊的else:elif 66
3.1.2 三元操作符 68
3.2 循环 69
3.2.1 for循环 69
3.2.2 迭代器和可迭代对象 71
3.2.3 对多个序列进行迭代 72
3.2.4 while循环 74
3.2.5 break和continue语句 76
3.2.6 一种特殊的else子句 77
3.3 赋值表达式 79
3.3.1 语句和表达式 79
3.3.2 使用海象操作符 80
3.3.3 告诫 81
3.4 综合应用 81
3.4.1 质数生成器 81
3.4.2 应用折扣 83
3.5 itertools模块速览 86
3.5.1 无限迭代器 86
3.5.2 终止于最短输入序列的
迭代器 86
3.5.3 组合迭代器 87
3.6 总结 88
第4章 函数,代码的基本构件 89
4.1 为什么要使用函数? 90
4.1.1 减少代码的重复 90
4.1.2 分割复杂任务 91
4.1.3 隐藏实现细节 91
4.1.4 提高可读性 92
4.1.5 提高可追踪性 92
4.2 作用域和名称解析 93
4.2.1 global和nonlocal语句 95
4.3 输入参数 96
4.3.1 实际参数的传递 97
4.3.2 形式参数名称的赋值 97
4.3.3 修改可变对象 98
4.3.4 传递实际参数 99
4.3.5 定义形式参数 101
4.4 返回值 109
4.4.1 返回多个值 110
4.5 一些实用的提示 111
4.6 递归函数 112
4.7 匿名函数 113
4.8 函数的属性 114
4.9 内置函数 115
4.10 代码的文档和注释 115
4.11 导入对象 116
4.11.1 相对导入 117
4.12 最后一个例子 118
4.13 总结 119
第5章 解析和生成器 120
5.1 map、zip、filter函数 121
5.1.1 map 121
5.1.2 zip 124
5.1.3 filter 125
5.2 解析 125
5.2.1 嵌套的解析 126
5.2.2 对解析进行过滤 127
5.2.3 字典解析 129
5.2.4 集合解析 130
5.3 生成器 130
5.3.1 生成器函数 130
5.3.2 next的幕后 133
5.3.3 yield from表达式 135
5.3.4 生成器表达式 136
5.4 性能上的考虑 138
5.5 不要过度使用解析和生成器 141
5.6 名称局部化 143
5.7 内置的生成行为 144
5.8 最后一个例子 145
5.9 总结 146
第6章 面向对象编程、装饰器和
迭代器 148
6.1 装饰器 148
6.1.1 装饰器工厂 153
6.2 面向对象编程(OOP) 155
6.2.1 最简单的Python类 155
6.2.2 类和对象的名字空间 156
6.2.3 属性屏蔽 157
6.2.4 使用self变量 158
6.2.5 实例的初始化 159
6.2.6 OOP与代码复用有关 159
6.2.7 访问基类 164
6.2.8 多重继承 165
6.2.9 类方法和静态方法 169
6.2.10 私有方法和名称改写 173
6.2.11 property装饰器 175
6.2.12 cached_property装饰器 176
6.2.13 操作符重载 178
6.2.14 多态——简单说明 178
6.2.15 数据类 179
6.3 编写自定义的迭代器 180
6.4 总结 181
第7章 异常和上下文管理器 182
7.1 异常 182
7.1.1 触发异常 184
7.1.2 自定义异常类 184
7.1.3 回溯 184
7.1.4 处理异常 185
7.1.5 不仅仅用于错误 188
7.2 上下文管理器 189
7.2.1 基于类的上下文管理器 191
7.2.2 基于生成器的上下文
管理器 192
7.3 总结 194
第8章 文件和数据持久化 195
8.1 操作文件和目录 195
8.1.1 打开文件 196
8.1.2 读取和写入文件 197
8.1.3 检查文件和目录是否存在 199
8.1.4 对文件和目录进行操作 200
8.1.5 临时文件和临时目录 202
8.1.6 目录的内容 203
8.1.7 文件和目录的压缩 204
8.2 数据交换格式 204
8.2.1 使用JSON 205
8.3 I/O、流和请求 211
8.3.2 创建HTTP请求 212
8.4 对磁盘上的数据进行持久化 214
8.4.1 使用pickle对数据进行
序列化 214
8.4.2 使用shelve保存数据 216
8.4.3 把数据保存到数据库 217
8.5 总结 222
第9章 加密与令牌 223
9.1 加密的需要 223
9.1.1 加密的实用指导原则 224
9.2 Hashlib模块 224
9.3 HMAC模块 226
9.4 secrets模块 227
9.4.1 随机数 227
9.4.2 令牌的生成 228
9.4.3 摘要的比较 229
9.5 JSON Web令牌 230
9.5.1 已注册的诉求 232
9.5.2 使用非对称(公钥)算法 235
9.6 参考阅读 235
9.7 总结 236
第 10章 测试 237
10.1 对应用程序进行测试 237
10.1.1 测试结构详解 239
10.1.2 测试的指导原则 240
10.1.3 单元测试 241
10.1.4 测试一个CSV生成器 243
10.2 测试驱动的开发 255
10.3 总结 257
第 11章 调试和性能分析 258
11.1 调试技巧 259
11.1.1 用print进行调试 259
11.1.2 用自定义函数进行调试 259
11.1.3 使用Python调试器 261
11.1.4 检查日志 263
11.1.5 其他方法 266
11.2 故障排除指南 267
11.2.1 在哪里检查 267
11.2.2 使用测试进行调试 268
11.2.4 监视 268
11.3 对Python进行性能分析 268
11.3.1 什么时候进行性能分析? 271
11.3.2 测量执行时间 271
11.4 总结 272
第 12章 GUI和脚本 273
12.1 第 一种方法:脚本 275
12.1.1 导入部分 275
12.1.2 解析参数 276
12.1.3 业务逻辑 278
12.2 第二种方法:GUI应用
程序 281
12.2.1 导入部分 282
12.2.2 布局逻辑 283
12.2.3 业务逻辑 286
12.2.4 如何改进这个应用程序? 291
12.3 下一步的方向 292
12.3.1 turtle模块 292
12.3.2 wxPython、PyQt和
PyGTK 292
12.3.3 最小惊讶原则 293
12.3.4 线程方面的考虑 293
12.4 总结 293
第 13章 数据科学简介 295
13.1 IPython和Jupyter Notebook 296
13.1.1 使用Anaconda 297
13.1.2 启动Notebook 298
13.2 处理数据 298
13.2.1 设置Notebook 299
13.2.2 准备数据 299
12.2.3 清理数据 303
13.2.4 创建DataFrame 304
13.2.5 把DataFrame保存到文件 311
13.2.6 显示结果 311
13.3 下一步的方向 316
13.4 总结 317
第 14章 API开发 318
14.1 什么是Web? 318
14.1.1 Web的工作方式 319
14.1.2 响应状态码 320
14.2 类型提示:概述 320
14.2.1 类型提示的优点 321
14.2.2 类型提示的精华 322
14.3 API简介 324
14.3.1 什么是API 324
14.3.2 API的用途 324
14.3.3 API协议 325
14.3.4 API数据交换格式 325
14.4 铁路API 326
14.4.1 对数据库进行建模 327
14.4.2 主要的设置和配置 332
14.4.3 车站端点 333
14.4.4 用户认证 345
14.4.5 创建API文档 347
14.5 消费API 348
14.6 未来的方向 353
14.7 总结 354
第 15章 打包Python应用程序 355
15.1 Python包索引 355
15.2 列车调度项目 357
15.3 用setuptools进行打包 361
15.3.1 必要的文件 361
15.3.2 程序包的元数据 364
15.3.3 定义程序包的内容 369
15.3.4 指定依赖关系 371
15.3.5 入口 373
15.4 生成和发布程序包 374
15.4.1 生成 374
15.4.2 发布 375
15.5 启动新项目的建议 377
15.6 其他工具 377
15.7 进一步的学习方向 378
15.8 总结 378