首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

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

  •  
  •   cosven · 55 天前 · 1136 次点击
    这是一个创建于 55 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为啥造轮子:开发或者学习 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 文档神器

    第 1 条附言  ·  54 天前
    bonus 2: jedi 也挺好玩的,也很好上手。有兴趣可以多折腾折腾 ~
    第 2 条附言  ·  54 天前

    统一回复一下:我看很多朋友说 PyCharm 里面有快捷键可以 跳转到定义/查看文档 等。嗯,是的。 现在很多配置好的编辑器,比如 Vim/Emacs 也都可以具有这些功能。在项目开发时,这个工具似乎确实没啥太大用武之地,因为现代的编辑器,IDE 做的还不错。仔细想了想,会使用到这个工具的应该是个平常经常使用命令行的开发者

    另外,这个工具的适用场景(从我自己的体验来说):

    1. review 别人代码时(这时用命令行会比较方便
    2. 在网上(Google/Stackoverflow/v2ex...)看到一段代码时,想看下这段代码涉及的类的文档
    3. 编写脚本时
    16 回复  |  直到 2018-12-27 11:57:48 +08:00
        1
    deepreader   55 天前
    Performance 方面如何呀?快不快
        2
    casparchen   55 天前 via iPhone
    G 感觉大多数情况 help()就够了
        3
    lihongjie0209   55 天前
    写 python 都不要 IDE 的吗
        4
    so1n   54 天前 via Android
    vim 自动补全的那个 ,gd 就好吧…
        5
    cosven   54 天前   ♥ 1
    @deepreader vim/Emacs 等编辑器后端用的应该都是 jedi,这个命令也主要是基于 jedi 来做的

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

    这个工具主要是提供了一种在命令行直接查看函数 /类定义的可能性。
        8
    cosven   54 天前
    @casparchen 试了下 help,它可以在 REPL 环境中使用,和 pydoc 提供的功能似乎是一样的

    (这个我之前倒是没怎么了解过 ~
        9
    andylsr   54 天前 via Android
    pycharm Ctrl+左键单击 自动跳转
        10
    huangzhe8263   54 天前 via Android
    如果用 Pycharm 的话在对应函数上按 Ctrl + Q,有惊喜
        11
    rocketman13   54 天前
    pycharm 鼠标中键按一下。。。就一下。。。
        12
    locoz   54 天前
    @huangzhe8263 #10 居然还有这种功能
        13
    xlui   54 天前 via Android
    @locoz ctrl+p 参数列表,ctrl+q api 文档,ctrl+b 跳转源码(等同 ctrl+鼠标左键点)
        14
    xpresslink   54 天前
    为啥造轮子?
    在 Pycharm 里,光标点在函数或对象上面,然后按需求打开 view 菜单从上面 2-5 项。快捷键就显示在右侧。
        15
    liushuangbill   54 天前
    @xxx x
        16
    liushuangbill   54 天前
    @dadadzm,m c
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2232 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 00:42 · PVG 08:42 · LAX 16:42 · JFK 19:42
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1