为啥造轮子:开发或者学习 Python 时,我们可能经常需要查看某个函数或者某个类的文档。 举个例子,之前我自己在使用 requests 时,就经常会想去查看 requests.Session 的源码实现? 但这时候,有没有什么快捷的方法迅速看到源码呢?
之前我有几个办法:
但这些办法都比较麻烦:今天偶然看到 jedi 的使用示例,于是撸了一个「快速跳转到 Python 函数、类、包 定义」的脚本。
https://github.com/cosven/rcfiles/blob/master/bin/mpy-goto-def
使用方法
./mpy-goto-def asyncio.wait
进阶使用 - 开启自动补全
pip3 install argcomplete
register-python-argcomplete mpy-goto-def >> .bashrc
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 文档神器
统一回复一下:我看很多朋友说 PyCharm 里面有快捷键可以 跳转到定义/查看文档 等。嗯,是的。 现在很多配置好的编辑器,比如 Vim/Emacs 也都可以具有这些功能。在项目开发时,这个工具似乎确实没啥太大用武之地,因为现代的编辑器,IDE 做的还不错。仔细想了想,会使用到这个工具的应该是个平常经常使用命令行的开发者
另外,这个工具的适用场景(从我自己的体验来说):
1
deepreader 2018-12-27 03:58:49 +08:00
Performance 方面如何呀?快不快
|
2
casparchen 2018-12-27 05:39:01 +08:00 via iPhone
G 感觉大多数情况 help()就够了
|
3
lihongjie0209 2018-12-27 08:16:28 +08:00
写 python 都不要 IDE 的吗
|
4
so1n 2018-12-27 09:17:06 +08:00 via Android
vim 自动补全的那个 ,gd 就好吧…
|
5
cosven OP @deepreader vim/Emacs 等编辑器后端用的应该都是 jedi,这个命令也主要是基于 jedi 来做的
我在 macbook pro 2017(8G) 上测试了几个:一般 0.3s 可以查出来,如果输入的类或者函数真的不存在,一般需要 0.5s 。感觉算一般吧,能用的级别 🤔 |
6
cosven OP @lihongjie0209 ummm,现代的编辑器都很强了,感觉 IDE 确实是个可选项,不过这个主要还是看个人习惯。
|
7
cosven OP @so1n 嗯,是的。如果是在编辑器里面的话,是可以直接查看函数定义。比如 vim,快捷键 gd 就可以 goto-definition。
这个工具主要是提供了一种在命令行直接查看函数 /类定义的可能性。 |
8
cosven OP |
9
andylsr 2018-12-27 09:42:37 +08:00 via Android
pycharm Ctrl+左键单击 自动跳转
|
10
huangzhe8263 2018-12-27 09:46:27 +08:00 via Android
如果用 Pycharm 的话在对应函数上按 Ctrl + Q,有惊喜
|
11
rocketman13 2018-12-27 10:20:10 +08:00
pycharm 鼠标中键按一下。。。就一下。。。
|
12
locoz 2018-12-27 10:32:22 +08:00
@huangzhe8263 #10 居然还有这种功能
|
13
xlui 2018-12-27 10:42:57 +08:00 via Android
@locoz ctrl+p 参数列表,ctrl+q api 文档,ctrl+b 跳转源码(等同 ctrl+鼠标左键点)
|
14
xpresslink 2018-12-27 11:04:45 +08:00
为啥造轮子?
在 Pycharm 里,光标点在函数或对象上面,然后按需求打开 view 菜单从上面 2-5 项。快捷键就显示在右侧。 |
15
liushuangbill 2018-12-27 11:57:28 +08:00
@xxx x
|
16
liushuangbill 2018-12-27 11:57:48 +08:00
@dadadzm,m c
|