Как перейти к определению функции в блокноте Jupyter? - PullRequest
0 голосов
/ 23 ноября 2018

Как мне перейти к определению функции в Jupyter?

Я хочу что-то вроде f12 Visual Studio или ctrl + щелчок eclipse.

Мне трудно поверить, что этого не существуетпока не смог найти

Ответы [ 2 ]

0 голосов
/ 14 июля 2019

Если вы можете перейти на JupyterLab, вы можете установить расширение jupyterlab-go-to-definition с:

jupyter labextension install @krassowski/jupyterlab_go_to_definition

Он поддерживает R и Python и позволяет переходить к определениям с помощьюalt-click (где alt можно изменить на другой ключевой модификатор в настройках).Дополнительные сведения об использовании см. В связанном репозитории GitHub (см. Выше).

С технической точки зрения существует два способа определения местоположения определений в записной книжке: статический анализ и проверка в ядре.Если вы еще не можете перейти на JupyterLab, вы можете попробовать повторно реализовать любой из них для jupyter-notebook.

  • Инспекции ядра могут показаться более простыми для реализации, поскольку они не зависят от используемого редактора кода, а должны быть написаны для каждого языка отдельно. Здесь является примером для Python
  • Статический анализ может быть выполнен с помощью внешнего инструмента, но он будет проблематичным из-за природы ноутбука (состоящего из нескольких ячеек, в отличие от обычных файлов исходного кода));подход, использованный в приведенном выше расширении, заключается в анализе токенов редактора CodeMirror, перебирающего ячейки, начиная с ячейки с использованием символа (где пользователь щелкает по переменной alt-click).Вот пример реализации для такой итерации.

Отказ от ответственности: я являюсь автором этого расширения.

0 голосов
/ 24 ноября 2018

Мне неизвестна такая функция, которая будет работать для всех ядер.

Если вы используете ядро ​​Python и у вас установлен ipython, вы можете использовать функции проверки:

  • %pdoc <object>: распечатать (или пропустить через пейджер, если он слишком длинный) строку документации для объекта.Если данный объект является классом, он напечатает и строки документации класса и конструктора.
  • %pdef <object>: печать подписи вызова для любого вызываемого объекта.Если объект является классом, выведите информацию конструктора.
  • %psource <object>: распечатать (или запустить через пейджер, если он слишком длинный) исходный код объекта.
  • %pfile <object>:Показать весь исходный файл, где объект был определен через пейджер, открыв его в строке, где начинается определение объекта.
  • %who/%whos: эти функции предоставляют информацию об идентификаторах, которые вы определили в интерактивном режиме (а не о загруженных вами вещах).или определяется в ваших файлах конфигурации).% who просто печатает список идентификаторов, а% whos печатает таблицу с некоторыми основными сведениями о каждом идентификаторе.

Ввод ??word или word?? предоставляет доступ к полной информации, включая исходный кодгде возможно.Длинные строки не отсекаются.

Пример использования

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

Ресурсы

Информация о динамическом объекте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...