内容简介
第一部分 起步
第1章 命令行简介
1.1 Shell概览
1.1.1 Shell是一款编程语言
1.1.2路径和pwd
1.1.3主目录(~)
1.1.4列出内容(ls)
1.1.5更改目录(cd)
1.1.6查看文件内容(head和tail命令)
1.2操作文件和目录
1.2.1创建文件(nano、emacs、vi、 cat、>和touch)
1.2.2复制和重命名文件(cp和mv)
1.2.3创建目录(mkdir)
1.2.4删除文件和目录(rm)
1.2.5标志和通配符
1.3获取帮助
1.3.1阅读程序手册(man)
1.3.2找到正确的工具(apropos)
1.3.3用重定向和管道组合多个实用程序(>、>>和|)
1.4权限和共享
1.4.1查看权限(ls-l)
1.4.2设置所有权
1.4.3设置权限(chmod)
1.4.4创建链接(ln)
1.4.5连接其他计算机(ssh和scp)
1.5环境
1.5.1保存环境变量(.bashrc)
1.5.2运行程序(PATH)
1.5.3别名命令(alias)
1.6使用bash编写脚本
1.7本章小结
第2章Python编程起步
2.1运行Python
2.2注释
2.3变量
2.4特殊变量
2.4.1布尔值
2.4.2 None不是0 !
2.4.3 NotImplemented不是None!
2.5操作符
2.6字符串
2.6.1字符串索引
2.6.2字符串连接
2.6.3字符串字面值
2.6.4字符串方法
2.7模块
2.7.1导入模块
2.7.2从模块中导入变量
2.7.3别名导入
2.7.4导入变量别名
2.7.5包
2.7.6标准库和Python生态系统
2.8本章小结
第3章 基本容器
3.1列表
3.2元组
3.3集合
3.4字典
3.5本章小结
第4章 流程控制和逻辑运算
4.1条件语句
4.1.1 if-else语句
4.1.2 if-elif-else语句
4.1.3 if-else表达式
4.2异常
4.3循环
4.3.1 while循环
4.3.2 for循环
4.3.3解析式
4.4本章小结
第5章 使用函数
5.1 Python中的函数
5.2关键字参数
5.3变长参数
5.4多返回值
5.5作用域
5.6递归
5.7 lambda
5.8生成器
5.9装饰器
5.10本章小结
第6章 类和对象
6.1面向对象
6.2对象
6.3类
6.3.1类变量
6.3.2实例变量
6.3.3构造器
6.3.4方法
6.3.5静态方法
6.3.6鸭子类型
6.3.7多态
6.4装饰器和元类
6.5本章小结
第二部分 上手
第7章 分析和可视化
7.1准备数据
7.1.1实验数据
7.1.2模拟数据
7.1.3元数据
7.2载入数据
7.2.1 NumPy
7.2.2 PyTables
7.2.3 Pandas
7.2.4 Blaze
7.3清理和改写数据
7.4分析
7.4.1模型驱动的分析
7.4.2数据驱动的分析
7.5可视化
7.5.1可视化工具
7.5.2 gnuplot
7.5.3 matplotlib
7.5.4 Bokeh
7.5.5 Inkscape
7.6本章小结
第8章 正则表达式
8.1示例:杂乱的磁性
8.2命令行中的元字符
8.2.1用简单的模式列出文件
8.2.2根据模式全局查找文件名(find)
8.3 grep、 sed、 awk
8.4在文件中查找模式(grep)
8.5在文件中查找和替换(sed)
8.5.1查找和替换复杂模式
8.5.2 sed额外内容
8.6处理数据列(awk)
8.7 Python正则表达式
8.8本章小结
第9章NumPy:以数组的形式思考
9.1数组
9.2 dtype
9.3切片和视图
9.4算术和广播
9.5花式索引
9.6掩模
9.7结构数组
9.8通用函数
9.9其他有用的函数
9.10本章小结
第10章 数据存储:文件和HDF5
10.1 Python中的文件
10.2关于计算机架构的一些说明
10.3 HDF5中的重要思想
10.4文件处理
10.5层次布局
10.6分块
10.7核内和核外操作
10.7.1核内
10.7.2核外
10.8查询
10.9压缩
10.10 HDF5工具
10.11本章小结
第11章 物理中重要的数据结构
11.1散列表
11.1.1调整大小
11.1.2冲突
11.2数据框
11.2.1 Series
11.2.2 DataFrame结构
11.3 B树
11.4 k-d树
11.5本章小结
第12章 并行化执行
12.1规模和扩展能力
12.2问题分类
12.3示例:N体问题
12.4非并行
12.5线程
12.6多处理
12.7 MPI
12.8本章小结
第13章 软件部署
13.1部署软件本身
13.1.1 pip
13.1.2 Conda
13.1.3虚拟机
13.1.4 Docker
13.2部署到云端
13.3在超算上部署
13.4本章小结
第3部分 完善
第14章 构建流程和软件
14.1 make
14.1.1运行make
14.1.2 makefile
14.1.3目标
14.1.4特殊目标
14.2构建和运行软件
14.2.1 Makefile配置
14.2.2编译
14.3安装
14.4本章小结
第15章 本地版本控制
15.1什么是版本控制
15.1.1计算物理中的实验室笔记本
15.1.2版本控制工具的类型
15.2 Git起步
15.2.1安装Git
15.2.2获取帮助
15.2.3控制Git的行为(git config)
15.3使用Git进行本地版本控制
15.3.1创建本地库(git init)
15.3.2暂存文件
15.3.3检查本地副本的状态(git status)
15.3.4保存快照(git commit)
15.3.5 git log:查看历史
15.3.6查看改动(git diff)
15.3.7取消暂存或回滚文件(git reset)
15.3.8丢弃提交(git revert)
15.3.9列出、创建、删除分支(git branch)
15.3.10切换分支(git checkout)
15.3.11合并分支(git merge)
15.3.12处理冲突
15.4本章小结
第16章 远程版本控制
16.1代码托管(github.com)
16.2在GitHub上创建代码库
16.3声明远程库(git remote)
16.4向远程库发送提交(git push)
16.5下载代码库(git clone)
16.6从远程库获取内容(git fetch)
16.7合并远程库的内容(git merge)
16.8 Pull等于Fetch加Merge(git pull)
16.9冲突
16.10解决冲突
16.11本章小结
第17章 调试
17.1遇到一个错误
17.2 print语句
17.3交互式调试
17.4在Pythong中调试(pdb)
17.4.1设置跟踪点
17.4.2步进
17.4.3查询变量
17.4.4设置状态
17.4.5运行函数和方法
17.4.6继续执行
17.4.7断点
17.5剖析
17.5.1使用pstats查看剖析文件
17.5.2可视化查看剖析信息
17.5.3使用Kernprof剖析代码
17.6 linting
17.7本章小结
第18章 测试
18.1为什么要做测试
18.2什么情况下要写测试
18.3在哪里编写测试
18.4如何测试?测试哪些内容
18.5运行测试
18.6边界情形
18.7单元测试
18.8集成测试
18.9回归测试
18.10测试生成器
18.11测试覆盖
18.12测试驱动开发
18.13本章小结
第4部分 发布
第19章 文档
19.1为什么文档很重要
19.1.1文档非常有价值
19.1.2编写文档比想象的要简单
19.2文档类型
19.2.1理论手册
19.2.2用户和开发者指南
19.2.3 readme文件
19.2.4注释
19.2.5自文档代码
19.2.6文档字符串
19.3自动化
19.4本章小结
第20章 出版
20.1文档处理
20.1.1格式和内容分离
20.1.2跟踪改动
20.2文本编辑器
20.3标记语言
20.3.1 LaTeX
20.3.2参考文献
20.4本章小结
第21章 协作
21.1任务单系统
21.1.1工作流程概览
21.1.2创建问题
21.1.3分配问题
21.1.4讨论问题
21.1.5关闭问题
21.2拉取请求和代码审查
21.2.1提交拉取请求
21.2.2审查合并请求
21.2.3合并拉取请求
21.3本章小结
第22章 许可证、所有权和版权
22.1哪些内容可赋予版权
22.2首次发布权
22.3什么是公共领域
22.4选择一个软件许可证
22.5伯克利软件发布许可证(BSD)
22.6 GNU General PublicLicense (GPL)
22.7知识共享(CC)
22.8其他许可证
22.9更换许可证
22.10版权不是一切
22.11本章小结
第23章 关于计算物理进一步思考
术语