2015-03-25 58 views

回答

6

當您運行在筆記本上的任何代碼,execute_request通過筆記本電腦服務器發送到「內核」,它執行你的代碼的過程。

當內核收到你的代碼時,它通過一系列輸入變換器來運行它。其中一個檢測到這條線是一個神奇的命令,將其重寫爲:

get_ipython().magic('load_ext sql') 

可以使用%hist -t這些翻譯命令看到。

.magic()方法取其參數load_ext的第一個單詞,然後在字典中查找它。你可以看到,詞典運行:

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

,賦予其的方法IPython.core.magics.extension.ExtensionMagics.load_ext,你可以看到here參考(這可能取決於你的IPython的版本會有點不同)。它用字符串的其餘部分調用該方法。

該方法導入包sql,並調用sql.load_ipython_extension(ip)進行設置。這取決於它的擴展 - 在這種情況下,它註冊了一些新的魔術功能。

+0

非常感謝,托馬斯,很好的回答 – 2015-04-02 07:57:38