5

ipthon-sql 是 ipython 的扩展,我先通过 pip install ipython-sql 安装

项目在这里:https ://github.com/catherinedevlin/ipython-sql

我的问题是:

当我输入 %load_ext sql 并按 SHIFT+ENTER 时,IPython 执行这个神奇语句的详细过程是什么?谢谢 ...

在此处输入图像描述

4

1 回答 1

6

当您在笔记本中运行任何代码时,execute_request都会通过笔记本服务器将 an 发送到“内核”,即执行代码的进程。

当内核收到您的代码时,它会通过一系列输入转换器运行它。其中之一检测到这一行是一个魔术命令,并将其重写为:

get_ipython().magic('load_ext sql')

您可以使用 . 查看这些翻译后的命令%hist -t

.magic()方法获取其参数的第一个单词load_ext,并在字典中查找它。您可以通过运行查看该字典:

get_ipython().magics_manager.magics['line']

(根据您的 IPython 版本,这可能会有所不同)

这为它提供了对该方法的引用IPython.core.magics.extension.ExtensionMagics.load_ext,您可以在此处看到该方法。它使用字符串的其余部分调用该方法。

该方法导入包sql,并调用sql.load_ipython_extension(ip)设置它。这取决于扩展它的作用——在这种情况下,它注册了一些新的魔法函数。

于 2015-03-25T17:46:50.387 回答