我是如何使用 PyCharm 阅读项目源码的

会议信息
我是如何使用 PyCharm 阅读项目源码的

这次的分享里,小白会以知名 Python HTTP 库 Requests 中的部分源码为例,向大家介绍平时使用 PyCharm 阅读项目源码的技巧。

会议日期:2020 年 10 月 22 日

会议时间:PM 09:00

主办方:

 
讲师介绍
韩宗明(小白)
捕蛇者说 主播

小白是知名 Podcast 节目 捕蛇者说 主播,经常在节目中分享与 Python 相关的经验,学习 Python 接近 2 年的时间,目前在大学导师的公司里工作,对 Python 编程有极大的热情。

写代码也好一段时间了,总觉得自己遇到瓶颈吗?曾听过资深开发者说,阅读优秀项目的源码是提高水平的方法吗?但若没有阅读技巧且缺少工具辅助,阅读源码肯定是件苦差事。本次网路研讨会邀请到 Podcast 捕蛇者说 主播小白跟大家分享如何使用 PyCharm 做为源码阅读工具,以及他自己阅读项目源码的技巧。

主題分享

小白从 18 年开始接触 Python 至今约 2 年的时间,目前在大学导师的车联网公司工作,主要负责数据监控平台的搭建,后端使用 Python 及 Django 框架。小白提到其本科是机械而非计算机专业,因此初学编程时都是靠死记硬背,学习顺序也很混乱,加上网上许多教程质量不高,让他在学习过程中走了很多不必要的弯路,在学完基础后就遇到瓶颈。为了强化自己的知识,他以阅读知名项目的源码做为学习工具,从中了解别人是如何构思项目代码的。

分享 Mind Map

不过阅读源码并不轻松,不仅文件多、代码行数也多,阅读起来很吃力。PyCharm 一直以来都是小白习惯使用的编程工具,安装好后默认配置可符合 Python 开发者的需求,可以省下手动配置的时间。小白首先分享他在使用 PyCharm 的前置设置,包括系统设置里的行为、字体及字体大小、针对 Python 代码语法高亮的调整,让 PyCharm 的动作更符合自己的偏好。接着小白再介绍了他在使用 PyCharm 阅读源码时会使用到的快捷键,像是快速跳转,只要按两下 Shift 键就可以搜索各式文件及 IDE 功能。在阅读源码的过程中,PyCharm 会把鼠标光标的历程纪录下来,通过通过鼠标快捷键就可以很方便的前进和后退。在代码上可以原地查看对象定义或文档,不用离开上下文,点击后即可切换到声明、超级方法、测试、用法和实现等。若是代码量太大,可以通过快捷键快速地把标签或代码合并起来,或是以正则来搜索,并依依大小写来过滤匹配结果。若是默认的 Keymap 不符合自己的需求,PyCharm 也可以高度定制。

用 TODO 整理筆記

接着,小白先以 Python HTTP 库 Requests(关于 HTTP 的基础知识可以先阅读一下 MDN 文档)为对象,依照自己日常的习惯带着大家以 PyCharm 阅读其源码。小白的阅读习惯是先选择一个切入点,并依照代码运行的顺序逐一阅读每一个方法及注释,在有分支的情况下优先选择更高级别的继续阅读下去。第一次阅读时,先以掌握代码运行流程为主,同时把运行的路径用 TODO 标记,若是遇到不懂和有疑虑的地方时,就在 TODO 加上标签和对应的说明。因为 PyCharm 会将所有 TODO 整理到 TODO 工具窗口里,还可以用过滤的功能把特定标签列出,通过这种笔记技巧,就可以一点一点的把执行流程找出来。在阅读完 Requests 库后,小白用同样的技巧阅读 wsgigrf 官方库源码及高德地图前端 Vue 包,为大家体现源码阅读的思路。

总结小白的经验,阅读源码的理由除了提高知识水平外,也是希望通过阅读质量比较高的项目源码去学习其编码习惯。所以在选择阅读项目时,建议找通用、有依循规范的库为对象,在阅读的过程中才能学到比较多。另外,跟着网上教程学习时,永远要带着怀疑的眼光,才能避开学习过程中不必要的弯路。

問答

Q. 还是对您使用 PyCharm 的习惯感兴趣一些,会觉得方便很多,这部分可以多介绍一些吗?比如一些小技巧

IDE 的操作和设置依照每个人的习惯与需求而有所不同,建议依照自己的需求去查询官方教程。若是想要了解 PyCharm 的各项特性,可以浏览官网功能特点页面。若是想要学习 PyCharm 的操作技巧,可以从官网的学习页面开始,尤其不能错过这份 PyCharm 指南,其中这 42 个小技巧非常值得学习,喜欢快捷键的朋友则可以下载这份键盘映射 PDF 文件。另外,也可以关注由 JetBrains 技术布道师圣佑搭建的 IntelliJ Tips 网站,上面有多场网络研讨会视频可以观看,同时关注他的 BiliBili 主页

插件的部份,若您想要使用中文 UI,可以依照官方博文安装汉化插件。想在点击快捷键时出现提示可以安装 Presentation Assistant,想要 IDE 训练你使用快捷键则可以安装 Key Promoter X。想看更多插件介绍的话,可以浏览这篇博文里的介绍

Q. Django 开发时涉及到前端部分,小白用的是 Django 自带的页面模版功能,还是由其他同事单独来开发前端?

目前负责的数据监控平台,前后端都是由我开发,不过我并没有用 Django 原生的模板,而是采前后端分离开发的。后端以 Django 开发 Restful API、前端则是用 Vue。

Q. 项目从开发到部署的过程,PyCharm 在其中能起到哪些作用?

在开发过程里,我主要用到 PyCharm 的是编辑功能、写测试代码及调试。尤其 PyCharm 的调试功能非常强大,建议大家了解一下。部署则可以参考这篇博文里的介绍安装插件,就可以将代码部署上云。

Q. 如何 SSH?如何部署?如何远程调试?

从功能菜单里选择 Tools 底下的 Start SSH Session 就可以配置 SSH 连接至服务器。同一个菜单底下的 Deployment 可以让你用 FTP 或 SFTP 等方式将文件上传至服务器。开启 Preferences 里的 Docker 或 Vagrant 配置,即可让 PyCharm 支援远程调试。跟远程有关的功能只有在 Professional 版才有,详细的版本差异可以看官网比较表

Q. 如何更新 PyCharm?

假如是用 JetBrains Toolbox App 安装 PyCharm 的话,每当有更新时会更新提示,只要按 Update 钮就可以一链更新。若是直接下载 PyCharm 安装的话,可以通过功能菜单里的 Check for Updates 来检查是否有更新,若有更新时也会跳出更新提示,点击后就会自动更新。

从小白的演示里可以看到,只要掌握阅读技巧加上 PyCharm 的辅助,阅读项目源码也可以变得高效。谁说 PyCharm 只能用在写代码?IDE 也可以做为学习工具呢!我们未来会繼續舉辦跟 Python 開發及 PyCharm 操作技巧的分享,敬请期待,我们下次见!