IPython如何?操作员实际工作?
问题描述:
所以我在想,为了在控制台应用程序中实现这样一个功能,在函数名的末尾添加一个问号将会倾吐出它的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