第 一部分 起步 n
第 1章 命令行简介 3 n
1.1 Shell概览 3 n
1.1.1 Shell是 一 款编程 n
语言 4 n
1.1.2 路径和pwd 5 n
1.1.3 主目录(~) 7 n
1.1.4 列出内容(ls) 8 n
1.1.5 更改目录(cd) 9 n
1.1.6 查看文件内容(head n
和tail命令) 12 n
1.2 操作文件和目录 12 n
1.2.1 创建文件(nano、emacs、 n
vi、cat、>、 n
touch) 12 n
第 一部分 起步 n
第 1章 命令行简介 3 n
1.1 Shell概览 3 n
1.1.1 Shell是 一 款编程 n
语言 4 n
1.1.2 路径和pwd 5 n
1.1.3 主目录(~) 7 n
1.1.4 列出内容(ls) 8 n
1.1.5 更改目录(cd) 9 n
1.1.6 查看文件内容(head n
和tail命令) 12 n
1.2 操作文件和目录 12 n
1.2.1 创建文件(nano、emacs、 n
vi、cat、>、 n
touch) 12 n
1.2.2 复制和重命名文件 n
(cp和mv) 17 n
1.2.3 创建目录 n
(mkdir) 18 n
1.2.4 删除文件和目录 n
(rm) 19 n
1.2.5 标志和通配符 21 n
1.3 获取帮助 22 n
1.3.1 阅读程序手册 n
(man) 22 n
1.3.2 找到正确的 n
工具(apropos) 24 n
1.3.3 用重定向和管道组合 n
多个实用程序 n
(>、>>、|) 25 n
1.4 权限和共享 26 n
1.4.1 查看权限(ls –l) 27 n
1.4.2 设置所有权 28 n
1.4.3 设置权限 n
(chmod) 29 n
1.4.4 创建链接(ln) 29 n
1.4.5 连接其他计算机 n
(ssh和scp) 30 n
1.5 环境 31 n
1.5.1 保存环境变量 n
(.bashrc) 33 n
1.5.2 运行程序 n
(PATH) 34 n
1.5.3 别名命令 n
(alias) 35 n
1.6 使用bash编写脚本 36 n
1.7 本章小结 38 n
第 2章 Python编程起步 39 n
2.1 运行Python 40 n
2.2 注释 41 n
2.3 变量 42 n
2.4 特殊变量 44 n
2.4.1 布尔值 44 n
2.4.2 None不是0! 45 n
2.4.3 NotImplemented n
不是None! 45 n
2.5 操作符 45 n
2.6 字符串 49 n
2.6.1 字符串索引 50 n
2.6.2 字符串连接 52 n
2.6.3 字符串字面值 53 n
2.6.4 字符串方法 55 n
2.7 模块 56 n
2.7.1 导入模块 56 n
2.7.2 从模块中导入 n
变量 57 n
2.7.3 别名导入 58 n
2.7.4 导入变量别名 58 n
2.7.5 包 59 n
2.7.6 标准库和Python n
生态系统 61 n
2.8 本章小结 62 n
第3章 基本容器 63 n
3.1 列表 64 n
3.2 元组 68 n
3.3 集合 69 n
3.4 字典 71 n
3.5 本章小结 73 n
第4章 流程控制和逻辑运算 75 n
4.1 条件语句 75 n
4.1.1 if-else语句 78 n
4.1.2 if-elif-else语句 79 n
4.1.3 if-else表达式 80 n
4.2 异常 80 n
4.2.1 抛出异常 81 n
4.3 循环 83 n
4.3.1 while循环 83 n
4.3.2 for循环 85 n
4.3.3 解析式 87 n
4.4 本章小结 90 n
第5章 使用函数 91 n
5.1 Python中的函数 91 n
5.2 关键字参数 94 n
5.3 变长参数 96 n
5.4 多返回值 98 n
5.5 作用域 99 n
5.6 递归 102 n
5.7 lambda 103 n
5.8 生成器 104 n
5.9 装饰器 107 n
5.10 本章小结 110 n
第6章 类和对象 112 n
6.1 面向对象 112 n
6.2 对象 113 n
6.3 类 117 n
6.3.1 类变量 118 n
6.3.2 实例变量 120 n
6.3.3 构造器 121 n
6.3.4 方法 123 n
6.3.5 静态方法 126 n
6.3.6 鸭子类型 127 n
6.3.7 多态 128 n
6.4 装饰器和元类 132 n
6.5 本章小结 134 n
第 2部分 上手 n
第7章 分析和可视化 139 n
7.1 准备数据 139 n
7.1.1 实验数据 143 n
7.1.2 模拟数据 144 n
7.1.3 元数据 145 n
7.2 载入数据 145 n
7.2.1 NumPy 146 n
7.2.2 PyTables 147 n
7.2.3 Pandas 147 n
7.2.4 Blaze 148 n
7.3 清理和改写数据 149 n
7.4 分析 153 n
7.4.1 模型驱动的分析 154 n
7.4.2 数据驱动的分析 155 n
7.5 可视化 156 n
7.5.1 可视化工具 157 n
7.5.2 gnuplot 158 n
7.5.3 matplotlib 160 n
7.5.4 Bokeh 165 n
7.5.5 Inkscape 167 n
7.6 本章小结 167 n
第8章 正则表达式 169 n
8.1 示例:杂乱的磁性 170 n
8.2 命令行中的元字符 171 n
8.2.1 用简单的模式 n
列出文件 172 n
8.2.2 根据模式全局查找 n
文件名(find) 173 n
8.3 grep、sed、awk 179 n
8.4 在文件中查找模式 n
(grep) 179 n
8.5 在文件中查找和替换 n
(sed) 181 n
8.5.1 查找和替换复杂 n
模式 183 n
8.5.2 sed额外内容 184 n
8.6 处理数据列(awk) 186 n
8.7 Python正则表达式 188 n
8.8 本章小结 190 n
第9章 NumPy:以数组的形式 n
思考 192 n
9.1 数组 193 n
9.2 dtype 195 n
9.3 切片和视图 198 n
9.4 算术和广播 200 n
9.5 花式索引 204 n
9.6 掩模 206 n
9.7 结构数组 209 n
9.8 通用函数 211 n
9.9 其他有用的函数 213 n
9.10 本章小结 215 n
第 10章 数据存储:文件和 n
HDF5 216 n
10.1 Python中的文件 217 n
10.2 关于计算机架构的一些说明 221 n
10.3 HDF5中的重要思想 223 n
10.4 文件处理 225 n
10.5 层次布局 227 n
10.6 分块 229 n
10.7 核内和核外操作 233 n
10.7.1 核内 233 n
10.7.2 核外 234 n
10.8 查询 235 n
10.9 压缩 236 n
10.10 HDF5工具 237 n
10.11 本章小结 239 n
第 11章 物理中重要的数据 n
结构 240 n
11.1 散列表 240 n
11.1.1 调整大小 242 n
11.1.2 冲突 243 n
11.2 数据框 245 n
11.2.1 Series 246 n
11.2.2 DataFrame结构 247 n
11.3 B数 250 n
11.4 k-d树 252 n
11.5 本章小结 256 n
第 12章 并行化执行 258 n
12.1 规模和扩展能力 259 n
12.2 问题分类 261 n
12.3 示例:N体问题 262 n
12.4 非并行 263 n
12.5 线程 267 n
12.6 多处理 273 n
12.7 MPI 276 n
12.8 本章小结 281 n
第 13章 软件部署 283 n
13.1 部署软件本身 284 n
13.1.1 pip 285 n
13.1.2 Conda 289 n
13.1.3 虚拟机 292 n
13.1.4 Docker 293 n
13.2 部署到云端 297 n
13.3 在超算上部署 299 n
13.4 本章小结 300 n
第3部分 完善 n
第 14章 构建流程和软件 305 n
14.1 make 306 n
14.1.1 运行make 308 n
14.1.2 makefile 308 n
14.1.3 目标 309 n
14.1.4 特殊目标 311 n
14.2 构建和运行软件 312 n
14.2.1 Makefile配置 313 n
14.2.2 编译 316 n
14.3 安装 316 n
14.4 本章小结 317 n
第 15章 本地版本控制 318 n
15.1 什么是版本控制 318 n
15.1.1 计算物理中的 n
实验室笔记本 319 n
15.1.2 版本控制工具的 n
类型 320 n
15.2 Git起步 320 n
15.2.1 安装Git 321 n
15.2.2 获取帮助 321 n
15.2.3 控制Git的行为 n
(git config) 322 n
15.3 使用Git进行本地版本 n
控制 323 n
15.3.1 创建本地库 n
(git init) 323 n
15.3.2 暂存文件 325 n
15.3.3 检查本地副本的状态 n
(git status) 326 n
15.3.4 保存快照 n
(git commit) 326 n
15.3.5 git log:查看 n
历史 329 n
15.3.6 查看改动 n
(git diff) 329 n
15.3.7 取消暂存或回滚文件 n
(git reset) 330 n
15.3.8 丢弃提交 n
(git revert) 331 n
15.3.9 列出、创建、删除分 n
支(git branch) 332 n
15.3.10 切换分支 n
(git checkout) 334 n
15.3.11 合并分支 n
(git merge) 334 n
15.3.12 处理冲突 336 n
15.4 本章小结 336 n
第 16章 远程版本控制 337 n
16.1 代码托管(github.com) 337 n
16.2 在GitHub上创建 n
代码库 339 n
16.3 声明远程库 n
(git remote) 339 n
16.4 向远程库发送提交 n
(git push) 340 n
16.5 下载代码库 n
(git clone) 341 n
16.6 从远程库获取内容 n
(git fetch) 344 n
16.7 合并远程库的内容 n
(git merge) 345 n
16.8 Pull等于Fetch加Merge n
(git pull) 345 n
16.9 冲突 346 n
16.10 解决冲突 347 n
16.11 本章小结 348 n
第 17章 调试 350 n
17.1 遇到一个bug 351 n
17.2 print语句 352 n
17.3 交互式调试 354 n
17.4 在Pythong中调试 n
(pdb) 355 n
17.4.1 设置跟踪点 356 n
17.4.2 步进 357 n
17.4.3 查询变量 358 n
17.4.4 设置状态 358 n
17.4.5 运行函数和 n
方法 359 n
17.4.6 继续执行 359 n
17.4.7 断点 360 n
17.5 剖析 360 n
17.5.1 使用pstats查看 n
剖析文件 361 n
17.5.2 可视化查看剖析 n
信息 361 n
17.5.3 使用Kernprof剖析 n
代码 364 n
17.6 linting 365 n
17.7 本章小结 366 n
第 18章 测试 368 n
18.1 为什么要做测试 369 n
18.2 什么时候写测试 369 n
18.3 在哪里编写测试 370 n
18.4 如何测试?测试哪些 n
内容 370 n
18.5 运行测试 373 n
18.6 边界情形 374 n
18.7 单元测试 376 n
18.8 集成测试 378 n
18.9 回归测试 380 n
18.10 测试生成器 380 n
18.11 测试覆盖 382 n
18.12 测试驱动开发 383 n
18.13 本章小结 386 n
第4部分 发布 n
第 19章 文档 389 n
19.1 为什么文档很重要 389 n
19.1.1 文档非常有价值 390 n
19.1.2 编写文档比想象的 n
要简单 390 n
19.2 文档类型 391 n
19.2.1 理论手册 391 n
19.2.2 用户和开 发 者 n
指南 392 n
19.2.3 readme文件 392 n
19.2.4 注释 393 n
19.2.5 自文档代码 395 n
19.2.6 文档字符串 396 n
19.3 自动化 397 n
19.4 本章小结 401 n
第 20章 出版 402 n
20.1 文档处理 403 n
20.1.1 格式和内容 n
分离 403 n
20.1.2 跟踪改动 404 n
20.2 文本编辑器 404 n
20.3 标记语言 405 n
20.3.1 LaTeX 406 n
20.3.2 参考文献 416 n
20.4 本章小结 419 n
第 21章 协作 421 n
21.1 任务单系统 422 n
21.1.1 工作流程概览 422 n
21.1.2 创建问题 424 n
21.1.3 分配问题 425 n
21.1.4 讨论问题 426 n
21.1.5 关闭问题 427 n
21.2 拉取请求和代码审查 427 n
21.2.1 提交拉取请求 428 n
21.2.2 审查合并请求 428 n
21.2.3 合并拉取请求 429 n
21.3 本章小结 429 n
第 22章 许可证、所有权和 n
版权 430 n
22.1 哪些内容可赋予版权 431 n
22.2 首 次发布权 431 n
22.3 什么是公共领域 432 n
22.4 选择一个软件许可证 432 n
22.5 伯克利软件发布 n
许可证(BSD) 434 n
22.6 GNU General Public n
License (GPL) 436 n
22.7 知识共享(CC) 437 n
22.8 其他许可证 438 n
22.9 更换许可证 440 n
22.10 版权不是一切 441 n
22.11 本章小结 442 n
第 23章 关于计算物理进一步 n
思考 443 n
术语 447