分享一个快速查看 Python 包/模块/类/函数 源码的脚本

2018-12-27 03:37:50 +08:00
 cosven

为啥造轮子:开发或者学习 Python 时,我们可能经常需要查看某个函数或者某个类的文档。 举个例子,之前我自己在使用 requests 时,就经常会想去查看 requests.Session 的源码实现? 但这时候,有没有什么快捷的方法迅速看到源码呢?

之前我有几个办法:

  1. 去 Github 上面搜
  2. 将 requests 源码拷贝在本地
  3. 在 IDE/编辑器 中跳转到函数定义
  4. cd 到 site-packages 目录中去,然后使用编辑器打开

但这些办法都比较麻烦:今天偶然看到 jedi 的使用示例,于是撸了一个「快速跳转到 Python 函数、类、包 定义」的脚本。

https://github.com/cosven/rcfiles/blob/master/bin/mpy-goto-def

使用方法

  1. 请确保机器安装了 Python 3 (版本 >= 3.6 )
  2. 下载脚本
  3. 执行下面命令时,它会自动调用编辑器打开相应文件,并跳转到对应的行( Vim/Emacs 测试 OK )
    ./mpy-goto-def asyncio.wait
    

进阶使用 - 开启自动补全

  1. 将脚本加入 PATH
  2. pip3 install argcomplete
  3. register-python-argcomplete mpy-goto-def >> .bashrc
  4. source .bashrc

开启自动补全后,我们在命令行输入 mpy-goto-def flask.Res 时 按 <tab> 会自动弹出 Response, Request 等候选项。</tab>

~ > mpy-goto-def flask.Re
flask.Redirect                flask.Request_finished
flask.Render_template         flask.Request_started
flask.Render_template_string  flask.Request_tearing_down
flask.Request                 flask.Response

bonus

推荐一个工具:pydoc -> 命令行查看 Python 文档神器

7002 次点击
所在节点    Python
16 条回复
deepreader
2018-12-27 03:58:49 +08:00
Performance 方面如何呀?快不快
casparchen
2018-12-27 05:39:01 +08:00
G 感觉大多数情况 help()就够了
lihongjie0209
2018-12-27 08:16:28 +08:00
写 python 都不要 IDE 的吗
so1n
2018-12-27 09:17:06 +08:00
vim 自动补全的那个 ,gd 就好吧…
cosven
2018-12-27 09:32:10 +08:00
@deepreader vim/Emacs 等编辑器后端用的应该都是 jedi,这个命令也主要是基于 jedi 来做的

我在 macbook pro 2017(8G) 上测试了几个:一般 0.3s 可以查出来,如果输入的类或者函数真的不存在,一般需要 0.5s 。感觉算一般吧,能用的级别 🤔
cosven
2018-12-27 09:34:16 +08:00
@lihongjie0209 ummm,现代的编辑器都很强了,感觉 IDE 确实是个可选项,不过这个主要还是看个人习惯。
cosven
2018-12-27 09:36:01 +08:00
@so1n 嗯,是的。如果是在编辑器里面的话,是可以直接查看函数定义。比如 vim,快捷键 gd 就可以 goto-definition。

这个工具主要是提供了一种在命令行直接查看函数 /类定义的可能性。
cosven
2018-12-27 09:38:10 +08:00
@casparchen 试了下 help,它可以在 REPL 环境中使用,和 pydoc 提供的功能似乎是一样的

(这个我之前倒是没怎么了解过 ~
andylsr
2018-12-27 09:42:37 +08:00
pycharm Ctrl+左键单击 自动跳转
huangzhe8263
2018-12-27 09:46:27 +08:00
如果用 Pycharm 的话在对应函数上按 Ctrl + Q,有惊喜
rocketman13
2018-12-27 10:20:10 +08:00
pycharm 鼠标中键按一下。。。就一下。。。
locoz
2018-12-27 10:32:22 +08:00
@huangzhe8263 #10 居然还有这种功能
xlui
2018-12-27 10:42:57 +08:00
@locoz ctrl+p 参数列表,ctrl+q api 文档,ctrl+b 跳转源码(等同 ctrl+鼠标左键点)
xpresslink
2018-12-27 11:04:45 +08:00
为啥造轮子?
在 Pycharm 里,光标点在函数或对象上面,然后按需求打开 view 菜单从上面 2-5 项。快捷键就显示在右侧。
liushuangbill
2018-12-27 11:57:28 +08:00
@xxx x
liushuangbill
2018-12-27 11:57:48 +08:00
@dadadzm,m c

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/521363

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX