Python语言及其应用(第2版)

Python语言及其应用(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Bill Lubanovic)
2022-03
版次: 1
ISBN: 9787115586223
定价: 129.80
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 488页
字数: 768千字
13人买过
  • 本书分为上、下两大部分,共计22章。部分(第1~11章)由浅入深地介绍Python的基础知识,包括变量、数值、条件语句、文本字符串、循环语句、元组、列表、字典、集合、函数、对象、类、模块、库,等等。掌握这些基础知识将为运用Python奠定牢固的基础。第二部分(第12~22章)介绍Python的应用,所涉及的领域包括Web应用、数据库、网络和机器学习。你将学会用Python处理时间、进行网络通信、完成数据科学任务等,还会了解并发的相关知识。 比尔·卢巴诺维奇(Bill Lubanovic)在长达40余年的软件开发生涯中积累了丰富的实战经验,开发过的项目跨越数据库、Web、分布式系统等多个领域。他曾负责用Python重新实现流行工具Wayback Machine。 前言 xxv

    第 一部分 Python基础

    第 1 章 Python初探 3

    1.1 谜题 3

    1.2 小程序 5

    1.3 大程序 7

    1.4 现实世界中的Python 10

    1.5 Python和其他语言 10

    1.6 为什么选择Python 12

    1.7 为什么不选择Python 14

    1.8 Python 2和Python 3 14

    1.9 安装Python 15

    1.10 运行Python 15

    1.10.1 使用交互式解释器 15

    1.10.2 使用Python文件 16

    1.10.3 下一步 17

    1.11 禅意时刻 17

    1.12 后续内容 17

    1.13 练习 18

    第 2 章 数据:类型、值、变量和名称 19

    2.1 Python数据皆是对象 19

    2.2 类型 20

    2.3 可变性 21

    2.4 字面值 22

    2.5 变量 22

    2.6 赋值 23

    2.7 变量是名称,不是位置 24

    2.8 向多个名称赋值 27

    2.9 为名称重新赋值 27

    2.10 复制 27

    2.11 选个好变量名 28

    2.12 后续内容 28

    2.13 练习 28

    第 3 章 数字 29

    3.1 布尔值 29

    3.2 整数 30

    3.2.1 字面整数 30

    3.2.2 整数运算符 31

    3.2.3 整数和变量 33

    3.2.4 优先级 34

    3.2.5 基数 35

    3.2.6 类型转换 37

    3.2.7 int类型有多大 39

    3.3 浮点数 40

    3.4 数学函数 41

    3.5 后续内容 41

    3.6 练习 41

    第 4 章 if语句 42

    4.1 使用#注释 42

    4.2 使用\\续行 43

    4.3 使用if、elif和else进行比较 44

    4.4 True是什么 46

    4.5 使用in进行多重比较 47

    4.6 新秀:我是海象 48

    4.7 后续内容 49

    4.8 练习 49

    第 5 章 字符串 50

    5.1 使用引号创建字符串 50

    5.2 使用str()创建字符串 52

    5.3 使用\\转义 53

    5.4 使用 拼接 54

    5.5 使用*重复 55

    5.6 使用[]获取字符 55

    5.7 使用分片提取子串 56

    5.8 使用len()获取字符串长度 58

    5.9 使用split()分割字符串 58

    5.10 使用join()合并字符串 59

    5.11 使用replace()进行替换 59

    5.12 使用strip()进行剥离 59

    5.13 搜索和选择 60

    5.14 大小写 62

    5.15 对齐 63

    5.16 格式化 63

    5.16.1 旧式样:% 63

    5.16.2 新式样:{}和format() 66

    5.16.3 式样:f字符串 67

    5.17 未完待续 68

    5.18 后续内容 68

    5.19 练习 68

    第 6 章 while循环和for循环 70

    6.1 while循环 70

    6.1.1 使用break跳出循环 71

    6.1.2 使用continue跳过本次循环 71

    6.1.3 使用else检查break 71

    6.2 使用for和in进行迭代 72

    6.2.1 使用break跳出循环 73

    6.2.2 使用continue跳过本次循环 73

    6.2.3 使用else检查break 73

    6.2.4 使用range()生成数字序列 74

    6.3 其他迭代器 74

    6.4 后续内容 74

    6.5 练习 74

    第 7 章 元组和列表 76

    7.1 元组 76

    7.1.1 使用逗号和()创建元组 77

    7.1.2 使用tuple()创建元组 78

    7.1.3 使用 拼接元组 78

    7.1.4 使用*复制元素 78

    7.1.5 比较元组 78

    7.1.6 使用for和in迭代元组 79

    7.1.7 修改元组 79

    7.2 列表 80

    7.2.1 使用[]创建列表 80

    7.2.2 使用list()创建或转换列表 80

    7.2.3 使用split()从字符串创建列表 80

    7.2.4 使用[offset]获取列表项 81

    7.2.5 使用切片获取列表项 82

    7.2.6 使用append()在末尾添加列表项 82

    7.2.7 使用insert()按偏移插入列表项 83

    7.2.8 使用*复制所有列表项 83

    7.2.9 使用extend()或 拼接列表 83

    7.2.10 使用[offset]修改列表项 84

    7.2.11 使用切片修改列表项 84

    7.2.12 使用del按偏移删除列表项 85

    7.2.13 使用remove()按值删除列表项 85

    7.2.14 使用pop()按偏移获取列表项并删除 85

    7.2.15 使用clear()删除所有列表项 86

    7.2.16 使用index()按值查找列表项的偏移 86

    7.2.17 使用in测试值 86

    7.2.18 使用count()统计某个值出现的次数 87

    7.2.19 使用join()将列表转换为字符串 87

    7.2.20 使用sort()或sorted()重新排序列表项 87

    7.2.21 使用len()获得列表长度 88

    7.2.22 使用=赋值 88

    7.2.23 使用copy()、list()或切片复制列表 89

    7.2.24 使用deepcopy()复制所有内容 89

    7.2.25 比较列表 90

    7.2.26 使用for和in迭代列表 91

    7.2.27 使用zip()迭代多个序列 92

    7.2.28 使用推导式创建列表 92

    7.2.29 列表的列表 95

    7.3 元组和列表 95

    7.4 不存在元组推导式 95

    7.5 后续内容 96

    7.6 练习 96

    第 8 章 字典和集合 98

    8.1 字典 98

    8.1.1 使用{}创建字典 98

    8.1.2 使用dict()创建字典 99

    8.1.3 使用dict()进行转换 99

    8.1.4 使用[key]添加或修改字典项 100

    8.1.5 使用[key]或get()获取字典项 101

    8.1.6 使用keys()获取所有的键 102

    8.1.7 使用values()获取所有值 102

    8.1.8 使用items()获取所有“键?C值”对 102

    8.1.9 使用len()获取长度 103

    8.1.10 使用{**a, **b}合并字典 103

    8.1.11 使用update()合并字典 103

    8.1.12 使用del按键删除字典项 104

    8.1.13 使用pop()按键获取字典项并将其删除 104

    8.1.14 使用clear()删除所有字典项 105

    8.1.15 使用in测试键是否存在 105

    8.1.16 使用=赋值 105

    8.1.17 使用copy()复制 105

    8.1.18 使用deepcopy()复制所有内容 106

    8.1.19 比较字典 107

    8.1.20 使用for和in迭代字典 107

    8.1.21 字典推导式 108

    8.2 集合 109

    8.2.1 使用set()创建集合 110

    8.2.2 使用set()进行转换 110

    8.2.3 使用len()获取集合元素个数 111

    8.2.4 使用add()添加元素 111

    8.2.5 使用remove()删除元素 111

    8.2.6 使用for和in迭代集合 111

    8.2.7 使用in测试元素 111

    8.2.8 集合运算 112

    8.2.9 集合推导式 115

    8.2.10 使用frozenset()创建不可变集合 115

    8.3 目前为止学过的数据结构 116

    8.4 创建更复杂的数据结构 116

    8.5 后续内容 117

    8.6 练习 117

    第 9 章 函数 119

    9.1 使用def定义函数 119

    9.2 使用圆括号调用函数 120

    9.3 实参与形参 120

    9.3.1 有用的None 122

    9.3.2 位置实参 123

    9.3.3 关键字实参 123

    9.3.4 指定默认形参值 124

    9.3.5 使用*拆分/汇集位置实参 125

    9.3.6 使用**拆分/汇集关键字实参 126

    9.3.7 仅关键字形参 127

    9.3.8 可变实参和不可变实参 128

    9.4 文档字符串 128

    9.5 作为“头等公民”的函数 129

    9.6 内部函数 131

    9.7 匿名函数:lambda 132

    9.8 生成器 133

    9.8.1 生成器函数 134

    9.8.2 生成器推导式 134

    9.9 装饰器 135

    9.10 名称空间和作用域 137

    9.11 名称中_和__的用法 139

    9.12 递归 139

    9.13 异步函数 140

    9.14 异常 140

    9.14.1 使用try和except处理错误 141

    9.14.2 编写自己的异常 142

    9.15 后续内容 143

    9.16 练习 143

    第 10 章 对象和类 144

    10.1 什么是对象 144

    10.2 简单对象 145

    10.2.1 使用class定义类 145

    10.2.2 特性 145

    10.2.3 方法 146

    10.2.4 初始化 147

    10.3 继承 148

    10.3.1 从父类继承 148

    10.3.2 覆盖方法 149

    10.3.3 添加方法 150

    10.3.4 使用super()获得父类的帮助 151

    10.3.5 多重继承 152

    10.3.6 mixin 153

    10.4 为self正名 154

    10.5 特性访问 154

    10.5.1 直接访问 154

    10.5.2 getter和setter 155

    10.5.3 用于特性访问的属性 155

    10.5.4 计算值属性 157

    10.5.5 使用名称重整保护内部隐私 158

    10.5.6 类和对象特性 158

    10.6 方法的类型 159

    10.6.1 实例方法 159

    10.6.2 类方法 159

    10.6.3 静态方法 160

    10.7 鸭子类型 160

    10.8 魔术方法 162

    10.9 聚合和组合 165

    10.10 何时使用对象或其他东西 166

    10.11 具名元组 166

    10.12 数据类 168

    10.13 attrs 169

    10.14 后续内容 169

    10.15 练习 169

    第 11 章 模块、包和赠品 170

    11.1 模块和import语句 170

    11.1.1 导入模块 170

    11.1.2 使用别名导入模块 172

    11.1.3 导入部分模块 172

    11.2 包 172

    11.2.1 模块搜索路径 174

    11.2.2 相对导入和导入 174

    11.2.3 名称空间包 175

    11.2.4 模块和对象 176

    11.3 Python标准库 176

    11.3.1 使用setdefault()和defaultdict()处理缺失的键 177

    11.3.2 使用Counter()计数 178

    11.3.3 使用OrderedDict()按键排序 179

    11.3.4 栈 队列=双端队列 180

    11.3.5 使用itertools迭代代码结构 181

    11.3.6 使用pprint()美化输出 182

    11.3.7 获得随机数 182

    11.4 获取其他Python代码 184

    11.5 后续内容 184

    11.6 练习 184

    第二部分 Python实践

    第 12 章 数据处理 187

    12.1 文本字符串:Unicode 188

    12.1.1 Python 3 Unicode字符串 188

    12.1.2 UTF-8 191

    12.1.3 编码 191

    12.1.4 解码 192

    12.1.5 HTML实体 194

    12.1.6 归一化 195

    12.1.7 更多信息 196

    12.2 字符串:正则表达式 196

    12.2.1 使用match()查找起始匹配 197

    12.2.2 使用search()查找首次匹配 198

    12.2.3 使用findall()查找所有匹配 198

    12.2.4 使用split()在匹配处分割 199

    12.2.5 使用sub()替换匹配 199

    12.2.6 模式:特殊字符 199

    12.2.7 模式:使用修饰符 201

    12.2.8 模式:指定match()的输出 203

    12.3 二进制数据 203

    12.3.1 bytes和bytearray 204

    12.3.2 使用struct转换二进制数据 205

    12.3.3 其他二进制数据工具 207

    12.3.4 使用binascii()转换二进制/字符串 208

    12.3.5 位运算符 208

    12.4 珠宝类比 209

    12.5 后续内容 209

    12.6 练习 209

    第 13 章 日历和时钟 211

    13.1 闰年 212

    13.2 datetime模块 212

    13.3 使用time模块 215

    13.4 读写日期和时间 216

    13.5 所有的转换 220

    13.6 替代模块 220

    13.7 后续内容 221

    13.8 练习 221

    第 14 章 文件和目录 222

    14.1 文件输入和输出 222

    14.1.1 使用open()创建或打开文件 222

    14.1.2 使用print()写入文本文件 223

    14.1.3 使用write()写入文本文件 223

    14.1.4 使用read()、readline()或readlines()读取文本文件 225

    14.1.5 使用write()写入二进制文件 226

    14.1.6 使用read()读取二进制文件 227

    14.1.7 使用with自动关闭文件 227

    14.1.8 使用seek()改变文件位置 228

    14.2 内存映射 229

    14.3 文件操作 229

    14.3.1 使用exists()检查文件是否存在 230

    14.3.2 使用isfile()检查文件类型 230

    14.3.3 使用copy()复制文件 231

    14.3.4 使用rename()重命名 231

    14.3.5 使用link()或symlink()创建链接 231

    14.3.6 使用chmod()改变文件权限 231

    14.3.7 使用chown()改变文件所属权 232

    14.3.8 使用remove()删除文件 232

    14.4 目录操作 232

    14.4.1 使用mkdir()创建目录 232

    14.4.2 使用rmdir()删除目录 232

    14.4.3 使用listdir()列出目录内容 232

    14.4.4 使用chdir()改变当前目录 233

    14.4.5 使用glob()列出匹配文件 233

    14.5 路径名 234

    14.5.1 使用abspath()获取路径名 235

    14.5.2 使用realpath()获取符号链接路径名 235

    14.5.3 使用os.path.join()构建路径名 235

    14.5.4 使用pathlib 235

    14.6 BytesIO和StringIO 236

    14.7 后续内容 237

    14.8 练习 237

    第 15 章 进程和并发 238

    15.1 程序和进程 238

    15.1.1 使用subprocess创建进程 239

    15.1.2 使用multiprocessing创建进程 240

    15.1.3 使用terminate()终止进程 241

    15.1.4 使用os获得系统信息 241

    15.1.5 使用psutil获取进程信息 242

    15.2 命令自动化 242

    15.2.1 invoke 243

    15.2.2 其他命令助手 243

    15.3 并发 244

    15.3.1 队列 245

    15.3.2 进程 245

    15.3.3 线程 246

    15.3.4 concurrent.futures 248

    15.3.5 绿色线程和gevent 251

    15.3.6 twisted 252

    15.3.7 asyncio 254

    15.3.8 Redis 254

    15.3.9 队列之外的选择 257

    15.4 后续内容 257

    15.5 练习 257

    第 16 章 持久性存储 258

    16.1 平面文本文件 258

    16.2 填充式文本文件 258

    16.3 表格式文本文件 259

    16.3.1 CSV 259

    16.3.2 XML 261

    16.3.3 XML安全提示 263

    16.3.4 HTML 263

    16.3.5 JSON 264

    16.3.6 YAML 266

    16.3.7 tablib 267

    16.3.8 Pandas 267

    16.3.9 配置文件 268

    16.4 二进制文件 269

    16.4.1 填充式二进制文件和内存映射 269

    16.4.2 电子表格 270

    16.4.3 HDF5 270

    16.4.4 TileDB 270

    16.5 关系数据库 270

    16.5.1 SQL 271

    16.5.2 DB-API 272

    16.5.3 SQLite 273

    16.5.4 MySQL 274

    16.5.5 PostgreSQL 275

    16.5.6 SQLAlchemy 275

    16.5.7 其他数据库访问包 280

    16.6 NoSQL数据存储 280

    16.6.1 dbm家族 280

    16.6.2 memcached 281

    16.6.3 Redis 282

    16.6.4 文档数据库 288

    16.6.5 时间序列数据库 289

    16.6.6 图数据库 289

    16.6.7 其他NoSQL 289

    16.7 全文数据库 290

    16.8 后续内容 290

    16.9 练习 290

    第 17 章 网络 292

    17.1 TCP/IP 292

    17.1.1 套接字 293

    17.1.2 Scapy 297

    17.1.3 Netcat 297

    17.2 联网模式 297

    17.3 “请求?C回应”模式 298

    17.3.1 ZeroMQ 298

    17.3.2 其他消息工具 301

    17.4 “发布?C订阅”模式 302

    17.4.1 Redis 302

    17.4.2 ZeroMQ 303

    17.4.3 其他“发布?C订阅”工具 305

    17.5 互联网服务 305

    17.5.1 域名系统 305

    17.5.2 Python电子邮件模块 306

    17.5.3 其他协议 306

    17.6 Web服务和API 306

    17.7 数据序列化 307

    17.7.1 使用pickle进行序列化 307

    17.7.2 其他序列化格式 308

    17.8 远程过程调用 309

    17.8.1 XML-RPC 309

    17.8.2 JSON-RPC 310

    17.8.3 MessagePack-RPC 311

    17.8.4 zerorpc 312

    17.8.5 gRPC 312

    17.8.6 twirp 313

    17.9 远程管理工具 313

    17.10 大数据 313

    17.10.1 Hadoop 314

    17.10.2 Spark 314

    17.10.3 Disco 314

    17.10.4 Dask 314

    17.11 云 315

    17.11.1 Amazon Web服务 316

    17.11.2 Google Cloud 316

    17.11.3 Microsoft Azure 316

    17.11.4 OpenStack 316

    17.12 Docker 316

    17.13 后续内容 317

    17.14 练习 317

    第 18 章 Web 318

    18.1 Web客户端 319

    18.1.1 使用telnet进行测试 320

    18.1.2 使用curl进行测试 321

    18.1.3 使用httpie进行测试 322

    18.1.4 使用httpbin进行测试 322

    18.1.5 Python的标准Web库 322

    18.1.6 标准库之外的requests 324

    18.2 Web服务器 325

    18.2.1 简单的Python Web服务器 326

    18.2.2 Web服务器网关接口(WSGI) 327

    18.2.3 ASGI 327

    18.2.4 Apache 328

    18.2.5 NGINX 329

    18.2.6 其他Python Web服务器 329

    18.3 Web服务器框架 330

    18.3.1 Bottle 330

    18.3.2 Flask 332

    18.3.3 Django 336

    18.3.4 其他框架 336

    18.4 数据库框架 337

    18.5 Web服务和自动化 337

    18.5.1 webbrowser 337

    18.5.2 webview 338

    18.6 Web API和REST 339

    18.7 爬取数据 339

    18.7.1 Scrapy 340

    18.7.2 BeautifulSoup 340

    18.7.3 requests-html 341

    18.8 看场电影吧 341

    18.9 后续内容 344

    18.10 练习 344

    第 19 章 成为Python主义者 345

    19.1 关于编程 345

    19.2 寻找Python代码 346

    19.3 安装Python包 346

    19.3.1 使用pip 346

    19.3.2 使用virtualenv 347

    19.3.3 使用pipenv 347

    19.3.4 使用包管理器 348

    19.3.5 从源代码安装 348

    19.4 集成化开发环境 348

    19.4.1 IDLE 348

    19.4.2 PyCharm 348

    19.4.3 IPython 349

    19.4.4 Jupyter Notebook 350

    19.4.5 JupyterLab 351

    19.5 名称和文档 351

    19.6 添加类型提示 352

    19.7 测试 353

    19.7.1 使用pylint、pyflakes 和pep8检查代码 353

    19.7.2 使用unittest进行测试 355

    19.7.3 使用doctest进行测试 358

    19.7.4 使用nose进行测试 359

    19.7.5 其他测试框架 360

    19.7.6 持续集成 360

    19.8 调试Python代码 361

    19.8.1 使用print() 361

    19.8.2 使用装饰器 362

    19.8.3 使用pdb 363

    19.8.4 使用breakpoint() 368

    19.9 记录错误消息 368

    19.10 优化 370

    19.10.1 测量时间 370

    19.10.2 算法和数据结构 373

    19.10.3 Cython、NumPy和C扩展 374

    19.10.4 PyPy 374

    19.10.5 Numba 374

    19.11 源代码控制 375

    19.11.1 Mercurial 375

    19.11.2 Git 376

    19.12 分发你的程序 378

    19.13 克隆本书 378

    19.14 更多内容 378

    19.14.1 图书 379

    19.14.2 网站 379

    19.14.3 团体 380

    19.14.4 会议 380

    19.14.5 Python相关的工作机会 380

    19.15 后续内容 380

    19.16 练习 381

    第 20 章 Python的艺术 382

    20.1 2D图形 382

    20.1.1 标准库 382

    20.1.2 PIL和Pillow 383

    20.1.3 ImageMagick 386

    20.2 3D图形 387

    20.3 3D动画 387

    20.4 图形用户界面 388

    20.5 绘图、图形和可视化 389

    20.5.1 Matplotlib 389

    20.5.2 Seaborn 391

    20.5.3 Bokeh 393

    20.6 游戏 393

    20.7 音频和音乐 393

    20.8 后续内容 394

    20.9 练习 394

    第 21 章 工作中的Python 395

    21.1 Microsoft Office套件 395

    21.2 执行企业任务 396

    21.3 处理企业数据 397

    21.3.1 提取、转换和装载 397

    21.3.2 数据验证 400

    21.3.3 其他信息源 400

    21.4 开源Python企业包 400

    21.5 金融中的Python 401

    21.6 商业数据安全 401

    21.7 地图 402

    21.7.1 格式 402

    21.7.2 根据shapefile绘制地图 403

    21.7.3 Geopandas 405

    21.7.4 其他绘图包 405

    21.7.5 应用和数据 406

    21.8 后续内容 406

    21.9 练习 406

    第 22 章 Python的科学 407

    22.1 标准库中的数学和统计 407

    22.1.1 数学函数 407

    22.1.2 处理复数 409

    22.1.3 使用decimal精确计算浮点数 410

    22.1.4 使用fractions执行有理数运算 410

    22.1.5 使用array创建压缩序列 411

    22.1.6 使用statistics进行简单的统计 411

    21.1.7 矩阵乘法 411

    22.2 科学Python 411

    22.3 NumPy 412

    22.3.1 使用array()创建数组 412

    22.3.2 使用arange()创建数组 413

    22.3.3 使用zeros()、ones()和random()创建数组 413

    22.3.4 使用reshape()改变数组的形状 414

    22.3.5 使用[]获取元素 415

    22.3.6 数组的算术运算 416

    22.3.7 线性代数 417

    22.4 SciPy 418

    22.5 SciKit 418

    22.6 Pandas 418

    22.7 Python和各个科学领域 419

    22.8 后续内容 420

    22.9 练习 420

    附录A 写给初级程序员的计算机软硬件知识 421

    附录B 安装Python 3 430

    附录C 截然不同的async 437

    附录D 习题答案 442

    附录E 速查表 483
  • 内容简介:
    本书分为上、下两大部分,共计22章。部分(第1~11章)由浅入深地介绍Python的基础知识,包括变量、数值、条件语句、文本字符串、循环语句、元组、列表、字典、集合、函数、对象、类、模块、库,等等。掌握这些基础知识将为运用Python奠定牢固的基础。第二部分(第12~22章)介绍Python的应用,所涉及的领域包括Web应用、数据库、网络和机器学习。你将学会用Python处理时间、进行网络通信、完成数据科学任务等,还会了解并发的相关知识。
  • 作者简介:
    比尔·卢巴诺维奇(Bill Lubanovic)在长达40余年的软件开发生涯中积累了丰富的实战经验,开发过的项目跨越数据库、Web、分布式系统等多个领域。他曾负责用Python重新实现流行工具Wayback Machine。
  • 目录:
    前言 xxv

    第 一部分 Python基础

    第 1 章 Python初探 3

    1.1 谜题 3

    1.2 小程序 5

    1.3 大程序 7

    1.4 现实世界中的Python 10

    1.5 Python和其他语言 10

    1.6 为什么选择Python 12

    1.7 为什么不选择Python 14

    1.8 Python 2和Python 3 14

    1.9 安装Python 15

    1.10 运行Python 15

    1.10.1 使用交互式解释器 15

    1.10.2 使用Python文件 16

    1.10.3 下一步 17

    1.11 禅意时刻 17

    1.12 后续内容 17

    1.13 练习 18

    第 2 章 数据:类型、值、变量和名称 19

    2.1 Python数据皆是对象 19

    2.2 类型 20

    2.3 可变性 21

    2.4 字面值 22

    2.5 变量 22

    2.6 赋值 23

    2.7 变量是名称,不是位置 24

    2.8 向多个名称赋值 27

    2.9 为名称重新赋值 27

    2.10 复制 27

    2.11 选个好变量名 28

    2.12 后续内容 28

    2.13 练习 28

    第 3 章 数字 29

    3.1 布尔值 29

    3.2 整数 30

    3.2.1 字面整数 30

    3.2.2 整数运算符 31

    3.2.3 整数和变量 33

    3.2.4 优先级 34

    3.2.5 基数 35

    3.2.6 类型转换 37

    3.2.7 int类型有多大 39

    3.3 浮点数 40

    3.4 数学函数 41

    3.5 后续内容 41

    3.6 练习 41

    第 4 章 if语句 42

    4.1 使用#注释 42

    4.2 使用\\续行 43

    4.3 使用if、elif和else进行比较 44

    4.4 True是什么 46

    4.5 使用in进行多重比较 47

    4.6 新秀:我是海象 48

    4.7 后续内容 49

    4.8 练习 49

    第 5 章 字符串 50

    5.1 使用引号创建字符串 50

    5.2 使用str()创建字符串 52

    5.3 使用\\转义 53

    5.4 使用 拼接 54

    5.5 使用*重复 55

    5.6 使用[]获取字符 55

    5.7 使用分片提取子串 56

    5.8 使用len()获取字符串长度 58

    5.9 使用split()分割字符串 58

    5.10 使用join()合并字符串 59

    5.11 使用replace()进行替换 59

    5.12 使用strip()进行剥离 59

    5.13 搜索和选择 60

    5.14 大小写 62

    5.15 对齐 63

    5.16 格式化 63

    5.16.1 旧式样:% 63

    5.16.2 新式样:{}和format() 66

    5.16.3 式样:f字符串 67

    5.17 未完待续 68

    5.18 后续内容 68

    5.19 练习 68

    第 6 章 while循环和for循环 70

    6.1 while循环 70

    6.1.1 使用break跳出循环 71

    6.1.2 使用continue跳过本次循环 71

    6.1.3 使用else检查break 71

    6.2 使用for和in进行迭代 72

    6.2.1 使用break跳出循环 73

    6.2.2 使用continue跳过本次循环 73

    6.2.3 使用else检查break 73

    6.2.4 使用range()生成数字序列 74

    6.3 其他迭代器 74

    6.4 后续内容 74

    6.5 练习 74

    第 7 章 元组和列表 76

    7.1 元组 76

    7.1.1 使用逗号和()创建元组 77

    7.1.2 使用tuple()创建元组 78

    7.1.3 使用 拼接元组 78

    7.1.4 使用*复制元素 78

    7.1.5 比较元组 78

    7.1.6 使用for和in迭代元组 79

    7.1.7 修改元组 79

    7.2 列表 80

    7.2.1 使用[]创建列表 80

    7.2.2 使用list()创建或转换列表 80

    7.2.3 使用split()从字符串创建列表 80

    7.2.4 使用[offset]获取列表项 81

    7.2.5 使用切片获取列表项 82

    7.2.6 使用append()在末尾添加列表项 82

    7.2.7 使用insert()按偏移插入列表项 83

    7.2.8 使用*复制所有列表项 83

    7.2.9 使用extend()或 拼接列表 83

    7.2.10 使用[offset]修改列表项 84

    7.2.11 使用切片修改列表项 84

    7.2.12 使用del按偏移删除列表项 85

    7.2.13 使用remove()按值删除列表项 85

    7.2.14 使用pop()按偏移获取列表项并删除 85

    7.2.15 使用clear()删除所有列表项 86

    7.2.16 使用index()按值查找列表项的偏移 86

    7.2.17 使用in测试值 86

    7.2.18 使用count()统计某个值出现的次数 87

    7.2.19 使用join()将列表转换为字符串 87

    7.2.20 使用sort()或sorted()重新排序列表项 87

    7.2.21 使用len()获得列表长度 88

    7.2.22 使用=赋值 88

    7.2.23 使用copy()、list()或切片复制列表 89

    7.2.24 使用deepcopy()复制所有内容 89

    7.2.25 比较列表 90

    7.2.26 使用for和in迭代列表 91

    7.2.27 使用zip()迭代多个序列 92

    7.2.28 使用推导式创建列表 92

    7.2.29 列表的列表 95

    7.3 元组和列表 95

    7.4 不存在元组推导式 95

    7.5 后续内容 96

    7.6 练习 96

    第 8 章 字典和集合 98

    8.1 字典 98

    8.1.1 使用{}创建字典 98

    8.1.2 使用dict()创建字典 99

    8.1.3 使用dict()进行转换 99

    8.1.4 使用[key]添加或修改字典项 100

    8.1.5 使用[key]或get()获取字典项 101

    8.1.6 使用keys()获取所有的键 102

    8.1.7 使用values()获取所有值 102

    8.1.8 使用items()获取所有“键?C值”对 102

    8.1.9 使用len()获取长度 103

    8.1.10 使用{**a, **b}合并字典 103

    8.1.11 使用update()合并字典 103

    8.1.12 使用del按键删除字典项 104

    8.1.13 使用pop()按键获取字典项并将其删除 104

    8.1.14 使用clear()删除所有字典项 105

    8.1.15 使用in测试键是否存在 105

    8.1.16 使用=赋值 105

    8.1.17 使用copy()复制 105

    8.1.18 使用deepcopy()复制所有内容 106

    8.1.19 比较字典 107

    8.1.20 使用for和in迭代字典 107

    8.1.21 字典推导式 108

    8.2 集合 109

    8.2.1 使用set()创建集合 110

    8.2.2 使用set()进行转换 110

    8.2.3 使用len()获取集合元素个数 111

    8.2.4 使用add()添加元素 111

    8.2.5 使用remove()删除元素 111

    8.2.6 使用for和in迭代集合 111

    8.2.7 使用in测试元素 111

    8.2.8 集合运算 112

    8.2.9 集合推导式 115

    8.2.10 使用frozenset()创建不可变集合 115

    8.3 目前为止学过的数据结构 116

    8.4 创建更复杂的数据结构 116

    8.5 后续内容 117

    8.6 练习 117

    第 9 章 函数 119

    9.1 使用def定义函数 119

    9.2 使用圆括号调用函数 120

    9.3 实参与形参 120

    9.3.1 有用的None 122

    9.3.2 位置实参 123

    9.3.3 关键字实参 123

    9.3.4 指定默认形参值 124

    9.3.5 使用*拆分/汇集位置实参 125

    9.3.6 使用**拆分/汇集关键字实参 126

    9.3.7 仅关键字形参 127

    9.3.8 可变实参和不可变实参 128

    9.4 文档字符串 128

    9.5 作为“头等公民”的函数 129

    9.6 内部函数 131

    9.7 匿名函数:lambda 132

    9.8 生成器 133

    9.8.1 生成器函数 134

    9.8.2 生成器推导式 134

    9.9 装饰器 135

    9.10 名称空间和作用域 137

    9.11 名称中_和__的用法 139

    9.12 递归 139

    9.13 异步函数 140

    9.14 异常 140

    9.14.1 使用try和except处理错误 141

    9.14.2 编写自己的异常 142

    9.15 后续内容 143

    9.16 练习 143

    第 10 章 对象和类 144

    10.1 什么是对象 144

    10.2 简单对象 145

    10.2.1 使用class定义类 145

    10.2.2 特性 145

    10.2.3 方法 146

    10.2.4 初始化 147

    10.3 继承 148

    10.3.1 从父类继承 148

    10.3.2 覆盖方法 149

    10.3.3 添加方法 150

    10.3.4 使用super()获得父类的帮助 151

    10.3.5 多重继承 152

    10.3.6 mixin 153

    10.4 为self正名 154

    10.5 特性访问 154

    10.5.1 直接访问 154

    10.5.2 getter和setter 155

    10.5.3 用于特性访问的属性 155

    10.5.4 计算值属性 157

    10.5.5 使用名称重整保护内部隐私 158

    10.5.6 类和对象特性 158

    10.6 方法的类型 159

    10.6.1 实例方法 159

    10.6.2 类方法 159

    10.6.3 静态方法 160

    10.7 鸭子类型 160

    10.8 魔术方法 162

    10.9 聚合和组合 165

    10.10 何时使用对象或其他东西 166

    10.11 具名元组 166

    10.12 数据类 168

    10.13 attrs 169

    10.14 后续内容 169

    10.15 练习 169

    第 11 章 模块、包和赠品 170

    11.1 模块和import语句 170

    11.1.1 导入模块 170

    11.1.2 使用别名导入模块 172

    11.1.3 导入部分模块 172

    11.2 包 172

    11.2.1 模块搜索路径 174

    11.2.2 相对导入和导入 174

    11.2.3 名称空间包 175

    11.2.4 模块和对象 176

    11.3 Python标准库 176

    11.3.1 使用setdefault()和defaultdict()处理缺失的键 177

    11.3.2 使用Counter()计数 178

    11.3.3 使用OrderedDict()按键排序 179

    11.3.4 栈 队列=双端队列 180

    11.3.5 使用itertools迭代代码结构 181

    11.3.6 使用pprint()美化输出 182

    11.3.7 获得随机数 182

    11.4 获取其他Python代码 184

    11.5 后续内容 184

    11.6 练习 184

    第二部分 Python实践

    第 12 章 数据处理 187

    12.1 文本字符串:Unicode 188

    12.1.1 Python 3 Unicode字符串 188

    12.1.2 UTF-8 191

    12.1.3 编码 191

    12.1.4 解码 192

    12.1.5 HTML实体 194

    12.1.6 归一化 195

    12.1.7 更多信息 196

    12.2 字符串:正则表达式 196

    12.2.1 使用match()查找起始匹配 197

    12.2.2 使用search()查找首次匹配 198

    12.2.3 使用findall()查找所有匹配 198

    12.2.4 使用split()在匹配处分割 199

    12.2.5 使用sub()替换匹配 199

    12.2.6 模式:特殊字符 199

    12.2.7 模式:使用修饰符 201

    12.2.8 模式:指定match()的输出 203

    12.3 二进制数据 203

    12.3.1 bytes和bytearray 204

    12.3.2 使用struct转换二进制数据 205

    12.3.3 其他二进制数据工具 207

    12.3.4 使用binascii()转换二进制/字符串 208

    12.3.5 位运算符 208

    12.4 珠宝类比 209

    12.5 后续内容 209

    12.6 练习 209

    第 13 章 日历和时钟 211

    13.1 闰年 212

    13.2 datetime模块 212

    13.3 使用time模块 215

    13.4 读写日期和时间 216

    13.5 所有的转换 220

    13.6 替代模块 220

    13.7 后续内容 221

    13.8 练习 221

    第 14 章 文件和目录 222

    14.1 文件输入和输出 222

    14.1.1 使用open()创建或打开文件 222

    14.1.2 使用print()写入文本文件 223

    14.1.3 使用write()写入文本文件 223

    14.1.4 使用read()、readline()或readlines()读取文本文件 225

    14.1.5 使用write()写入二进制文件 226

    14.1.6 使用read()读取二进制文件 227

    14.1.7 使用with自动关闭文件 227

    14.1.8 使用seek()改变文件位置 228

    14.2 内存映射 229

    14.3 文件操作 229

    14.3.1 使用exists()检查文件是否存在 230

    14.3.2 使用isfile()检查文件类型 230

    14.3.3 使用copy()复制文件 231

    14.3.4 使用rename()重命名 231

    14.3.5 使用link()或symlink()创建链接 231

    14.3.6 使用chmod()改变文件权限 231

    14.3.7 使用chown()改变文件所属权 232

    14.3.8 使用remove()删除文件 232

    14.4 目录操作 232

    14.4.1 使用mkdir()创建目录 232

    14.4.2 使用rmdir()删除目录 232

    14.4.3 使用listdir()列出目录内容 232

    14.4.4 使用chdir()改变当前目录 233

    14.4.5 使用glob()列出匹配文件 233

    14.5 路径名 234

    14.5.1 使用abspath()获取路径名 235

    14.5.2 使用realpath()获取符号链接路径名 235

    14.5.3 使用os.path.join()构建路径名 235

    14.5.4 使用pathlib 235

    14.6 BytesIO和StringIO 236

    14.7 后续内容 237

    14.8 练习 237

    第 15 章 进程和并发 238

    15.1 程序和进程 238

    15.1.1 使用subprocess创建进程 239

    15.1.2 使用multiprocessing创建进程 240

    15.1.3 使用terminate()终止进程 241

    15.1.4 使用os获得系统信息 241

    15.1.5 使用psutil获取进程信息 242

    15.2 命令自动化 242

    15.2.1 invoke 243

    15.2.2 其他命令助手 243

    15.3 并发 244

    15.3.1 队列 245

    15.3.2 进程 245

    15.3.3 线程 246

    15.3.4 concurrent.futures 248

    15.3.5 绿色线程和gevent 251

    15.3.6 twisted 252

    15.3.7 asyncio 254

    15.3.8 Redis 254

    15.3.9 队列之外的选择 257

    15.4 后续内容 257

    15.5 练习 257

    第 16 章 持久性存储 258

    16.1 平面文本文件 258

    16.2 填充式文本文件 258

    16.3 表格式文本文件 259

    16.3.1 CSV 259

    16.3.2 XML 261

    16.3.3 XML安全提示 263

    16.3.4 HTML 263

    16.3.5 JSON 264

    16.3.6 YAML 266

    16.3.7 tablib 267

    16.3.8 Pandas 267

    16.3.9 配置文件 268

    16.4 二进制文件 269

    16.4.1 填充式二进制文件和内存映射 269

    16.4.2 电子表格 270

    16.4.3 HDF5 270

    16.4.4 TileDB 270

    16.5 关系数据库 270

    16.5.1 SQL 271

    16.5.2 DB-API 272

    16.5.3 SQLite 273

    16.5.4 MySQL 274

    16.5.5 PostgreSQL 275

    16.5.6 SQLAlchemy 275

    16.5.7 其他数据库访问包 280

    16.6 NoSQL数据存储 280

    16.6.1 dbm家族 280

    16.6.2 memcached 281

    16.6.3 Redis 282

    16.6.4 文档数据库 288

    16.6.5 时间序列数据库 289

    16.6.6 图数据库 289

    16.6.7 其他NoSQL 289

    16.7 全文数据库 290

    16.8 后续内容 290

    16.9 练习 290

    第 17 章 网络 292

    17.1 TCP/IP 292

    17.1.1 套接字 293

    17.1.2 Scapy 297

    17.1.3 Netcat 297

    17.2 联网模式 297

    17.3 “请求?C回应”模式 298

    17.3.1 ZeroMQ 298

    17.3.2 其他消息工具 301

    17.4 “发布?C订阅”模式 302

    17.4.1 Redis 302

    17.4.2 ZeroMQ 303

    17.4.3 其他“发布?C订阅”工具 305

    17.5 互联网服务 305

    17.5.1 域名系统 305

    17.5.2 Python电子邮件模块 306

    17.5.3 其他协议 306

    17.6 Web服务和API 306

    17.7 数据序列化 307

    17.7.1 使用pickle进行序列化 307

    17.7.2 其他序列化格式 308

    17.8 远程过程调用 309

    17.8.1 XML-RPC 309

    17.8.2 JSON-RPC 310

    17.8.3 MessagePack-RPC 311

    17.8.4 zerorpc 312

    17.8.5 gRPC 312

    17.8.6 twirp 313

    17.9 远程管理工具 313

    17.10 大数据 313

    17.10.1 Hadoop 314

    17.10.2 Spark 314

    17.10.3 Disco 314

    17.10.4 Dask 314

    17.11 云 315

    17.11.1 Amazon Web服务 316

    17.11.2 Google Cloud 316

    17.11.3 Microsoft Azure 316

    17.11.4 OpenStack 316

    17.12 Docker 316

    17.13 后续内容 317

    17.14 练习 317

    第 18 章 Web 318

    18.1 Web客户端 319

    18.1.1 使用telnet进行测试 320

    18.1.2 使用curl进行测试 321

    18.1.3 使用httpie进行测试 322

    18.1.4 使用httpbin进行测试 322

    18.1.5 Python的标准Web库 322

    18.1.6 标准库之外的requests 324

    18.2 Web服务器 325

    18.2.1 简单的Python Web服务器 326

    18.2.2 Web服务器网关接口(WSGI) 327

    18.2.3 ASGI 327

    18.2.4 Apache 328

    18.2.5 NGINX 329

    18.2.6 其他Python Web服务器 329

    18.3 Web服务器框架 330

    18.3.1 Bottle 330

    18.3.2 Flask 332

    18.3.3 Django 336

    18.3.4 其他框架 336

    18.4 数据库框架 337

    18.5 Web服务和自动化 337

    18.5.1 webbrowser 337

    18.5.2 webview 338

    18.6 Web API和REST 339

    18.7 爬取数据 339

    18.7.1 Scrapy 340

    18.7.2 BeautifulSoup 340

    18.7.3 requests-html 341

    18.8 看场电影吧 341

    18.9 后续内容 344

    18.10 练习 344

    第 19 章 成为Python主义者 345

    19.1 关于编程 345

    19.2 寻找Python代码 346

    19.3 安装Python包 346

    19.3.1 使用pip 346

    19.3.2 使用virtualenv 347

    19.3.3 使用pipenv 347

    19.3.4 使用包管理器 348

    19.3.5 从源代码安装 348

    19.4 集成化开发环境 348

    19.4.1 IDLE 348

    19.4.2 PyCharm 348

    19.4.3 IPython 349

    19.4.4 Jupyter Notebook 350

    19.4.5 JupyterLab 351

    19.5 名称和文档 351

    19.6 添加类型提示 352

    19.7 测试 353

    19.7.1 使用pylint、pyflakes 和pep8检查代码 353

    19.7.2 使用unittest进行测试 355

    19.7.3 使用doctest进行测试 358

    19.7.4 使用nose进行测试 359

    19.7.5 其他测试框架 360

    19.7.6 持续集成 360

    19.8 调试Python代码 361

    19.8.1 使用print() 361

    19.8.2 使用装饰器 362

    19.8.3 使用pdb 363

    19.8.4 使用breakpoint() 368

    19.9 记录错误消息 368

    19.10 优化 370

    19.10.1 测量时间 370

    19.10.2 算法和数据结构 373

    19.10.3 Cython、NumPy和C扩展 374

    19.10.4 PyPy 374

    19.10.5 Numba 374

    19.11 源代码控制 375

    19.11.1 Mercurial 375

    19.11.2 Git 376

    19.12 分发你的程序 378

    19.13 克隆本书 378

    19.14 更多内容 378

    19.14.1 图书 379

    19.14.2 网站 379

    19.14.3 团体 380

    19.14.4 会议 380

    19.14.5 Python相关的工作机会 380

    19.15 后续内容 380

    19.16 练习 381

    第 20 章 Python的艺术 382

    20.1 2D图形 382

    20.1.1 标准库 382

    20.1.2 PIL和Pillow 383

    20.1.3 ImageMagick 386

    20.2 3D图形 387

    20.3 3D动画 387

    20.4 图形用户界面 388

    20.5 绘图、图形和可视化 389

    20.5.1 Matplotlib 389

    20.5.2 Seaborn 391

    20.5.3 Bokeh 393

    20.6 游戏 393

    20.7 音频和音乐 393

    20.8 后续内容 394

    20.9 练习 394

    第 21 章 工作中的Python 395

    21.1 Microsoft Office套件 395

    21.2 执行企业任务 396

    21.3 处理企业数据 397

    21.3.1 提取、转换和装载 397

    21.3.2 数据验证 400

    21.3.3 其他信息源 400

    21.4 开源Python企业包 400

    21.5 金融中的Python 401

    21.6 商业数据安全 401

    21.7 地图 402

    21.7.1 格式 402

    21.7.2 根据shapefile绘制地图 403

    21.7.3 Geopandas 405

    21.7.4 其他绘图包 405

    21.7.5 应用和数据 406

    21.8 后续内容 406

    21.9 练习 406

    第 22 章 Python的科学 407

    22.1 标准库中的数学和统计 407

    22.1.1 数学函数 407

    22.1.2 处理复数 409

    22.1.3 使用decimal精确计算浮点数 410

    22.1.4 使用fractions执行有理数运算 410

    22.1.5 使用array创建压缩序列 411

    22.1.6 使用statistics进行简单的统计 411

    21.1.7 矩阵乘法 411

    22.2 科学Python 411

    22.3 NumPy 412

    22.3.1 使用array()创建数组 412

    22.3.2 使用arange()创建数组 413

    22.3.3 使用zeros()、ones()和random()创建数组 413

    22.3.4 使用reshape()改变数组的形状 414

    22.3.5 使用[]获取元素 415

    22.3.6 数组的算术运算 416

    22.3.7 线性代数 417

    22.4 SciPy 418

    22.5 SciKit 418

    22.6 Pandas 418

    22.7 Python和各个科学领域 419

    22.8 后续内容 420

    22.9 练习 420

    附录A 写给初级程序员的计算机软硬件知识 421

    附录B 安装Python 3 430

    附录C 截然不同的async 437

    附录D 习题答案 442

    附录E 速查表 483
查看详情
您可能感兴趣 / 更多
Python语言及其应用(第2版)
语言恶女:女性如何夺回语言
[美]阿曼达·蒙特尔/著李辛/译
Python语言及其应用(第2版)
过劳:好工作是如何变坏的
[美]艾琳·L.凯利(Erin;L.Kelly;[美]菲利斯·莫恩((Phyllis;Moen
Python语言及其应用(第2版)
雪花的故事(用照片展示雪花的秘密,为你揭开冬日奇景的奥秘)
[美]马克·卡西诺[美]乔恩·尼尔森
Python语言及其应用(第2版)
进阶书系-国际史的技艺
[美] 马克·特拉亨伯格
Python语言及其应用(第2版)
杜甫传
[美]弗洛伦斯.艾思柯
Python语言及其应用(第2版)
神奇的数字零:从数字0开始的极简数学史和人类发展史
[美]查尔斯·塞弗(Charles Seife)著 杨杨立汝 译
Python语言及其应用(第2版)
爵士乐史(精装本)
[美]泰德·乔亚 著
Python语言及其应用(第2版)
作家榜名著:夏日走过山间(王芳推荐版本!与《瓦尔登湖》齐名的经典名作!心浮气躁想要逃离现实生活?让大自然的神奇力量瞬间治愈你!)
[美]约翰·缪尔、作家榜经典名 著;刘子超 译
Python语言及其应用(第2版)
环境的科学 (平装版)
[美]威廉·坎宁安 后浪
Python语言及其应用(第2版)
数学侦探 游乐园里的古怪笑脸
[美]丹尼尔·肯尼 艾米丽·博艾尔 著 刘玙婧、王婧 译;小博集出品
Python语言及其应用(第2版)
读懂经济学:提升“财商”、塑造价值观念的经济学读本,一本书参破瞬息万变的经济世界底层逻辑!
[美]霍华德·亚鲁斯 著;赵善江 译;斯坦威 出品
Python语言及其应用(第2版)
数学侦探 神秘路线上的连环追踪
[美]丹尼尔·肯尼 艾米丽·博艾尔 著 刘玙婧、王婧 译;小博集出品