所以我在想,爲了在控制檯應用程序中實現這樣一個功能,在函數名的末尾添加一個問號將會傾吐出它的doc字符串,我可能會使用類似metaclasses的功能,其中定義/導入,我會複製所有的模塊成員名稱,併產生新的只是輸入文檔字符串。IPython如何?操作員實際工作?
然後我注意到你不需要實際的括號來調用助手函數,python實際上並不允許你在函數名的末尾加一個問號......所以這樣做是在蟒蛇或我只是浪費我的時間試圖弄清楚這一點?提前
所以我在想,爲了在控制檯應用程序中實現這樣一個功能,在函數名的末尾添加一個問號將會傾吐出它的doc字符串,我可能會使用類似metaclasses的功能,其中定義/導入,我會複製所有的模塊成員名稱,併產生新的只是輸入文檔字符串。IPython如何?操作員實際工作?
然後我注意到你不需要實際的括號來調用助手函數,python實際上並不允許你在函數名的末尾加一個問號......所以這樣做是在蟒蛇或我只是浪費我的時間試圖弄清楚這一點?提前
它沒有按照您想象的方式完成。 ipython會將您的命令提示符輸入作爲一行文本讀取,因此它有機會在它將它傳遞到eval
(或其他)之前檢查它是否以問號結束。如果確實如此,它將運行help(name)
而不是您輸入的內容。
AST看起來有點沉重,但您可以通過查看模塊code
瞭解它的工作原理。它給了你一個輕量級的解釋器,如果你願意的話,你可以用這種語法來擴展。
看一看在IPython.core.inputsplitter
模塊,它分析的東西像,/,%原始輸入行的代碼等
非常多 - 實際上它將它翻譯成'get_ipython()。magic(u'pinfo name')''。您可以使用'%hist -t'查看翻譯的命令。 – 2012-03-28 22:08:30