如何在Jupyter笔记本中转到函数的定义?

时间:2018-11-23 17:45:31

标签: jupyter-notebook

如何在Jupyter中转到函数定义?

我想要类似Visual Studio的f12或eclipse的ctrl + click。

我很难相信这不存在,但找不到它

2 个答案:

答案 0 :(得分:2)

我不知道这种适用于所有内核的功能。

如果您使用的是Python内核并安装了ipython,则可以使用检查功能:

  
      
  • %pdoc <object>:打印(或如果过长,则通过分页器运行)对象的文档字符串。如果给定的对象是一个类,它将打印   类和构造函数文档字符串。
  •   
  • %pdef <object>:打印任何可调用对象的呼叫签名。如果对象是类,则打印构造函数信息。
  •   
  • %psource <object>:打印(或过长地通过寻呼机显示)对象的源代码。
  •   
  • %pfile <object>:显示通过分页器定义对象的整个源文件,并在该对象所在的行将其打开   定义开始。
  •   
  • %who/%whos:这些函数提供有关您以交互方式定义的标识符的信息(不是您在其中加载或定义的内容)   您的配置文件)。 %w只是打印标识符列表,然后   %whos打印一张表格,其中包含有关每个标识符的一些基本详细信息。
  •   
     

键入??wordword??可以访问全部信息,   尽可能包含源代码。长字符串不是   抢夺。

用法示例

In [4]: pd.DataFrame?

In [5]: pd.DataFrame??

In [6]: %pdef pd.Dataframe
Object `pd.Dataframe` not found.

In [7]: %pdef pd.DataFrame
Class constructor information:
 pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

In [8]: %pdoc pd.DataFrame

In [9]: %pfile pd.DataFrame

资源

Dynamic object information

答案 1 :(得分:0)

如果您可以升级到JupyterLab,则可以安装带有以下内容的jupyterlab-go-to-definition扩展名:

jupyter labextension install @krassowski/jupyterlab_go_to_definition

它支持R和Python,并允许通过alt单击来跳转到定义(其中alt可以更改为设置中的另一个键修饰符)。有关更多用法的详细信息,请参见链接的GitHub存储库(上方)。

在技术方面,有两种方法可以在笔记本中获取定义的位置:内核中的静态分析和检查。如果您还不能升级到JupyterLab,则可以尝试重新实现jupyter-notebook的任何一个。

  • 内核检查似乎易于实现,因为它们不依赖于所使用的代码编辑器,而必须分别针对每种语言编写。 Here是Python的示例
  • 可以通过外部工具进行静态分析,但是由于笔记本的特性(与普通源代码文件不同,它由多个单元组成)会带来问题。上面扩展中使用的方法是分析CodeMirror编辑器的令牌,从具有符号用法的单元格开始(在用户按住Alt键单击变量的情况下)遍历单元格。这是implementation进行此类迭代的示例。

免责声明:我是此扩展程序的作者。