Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IPython';s接线员真的工作吗?_Python_Console_Ipython_Metaclass - Fatal编程技术网

IPython';s接线员真的工作吗?

IPython';s接线员真的工作吗?,python,console,ipython,metaclass,Python,Console,Ipython,Metaclass,所以我想,为了在控制台应用程序中实现这样一个功能,在函数名的末尾添加问号将输出它的文档字符串,我可能会使用类似元类的功能,在定义/导入时,我将复制所有模块成员名称,并生成新名称,仅用于键入文档字符串 然后我注意到调用helper函数不需要实际的括号,python实际上也不允许在函数名的末尾打问号。。。。那么,这是用python实现的,还是我只是在浪费时间试图弄明白这一点 提前感谢ipython使用,您可以自定义语法解析并创建新的ipython fork 可能有帮助这不是你想象的那样。ipytho

所以我想,为了在控制台应用程序中实现这样一个功能,在函数名的末尾添加问号将输出它的文档字符串,我可能会使用类似元类的功能,在定义/导入时,我将复制所有模块成员名称,并生成新名称,仅用于键入文档字符串

然后我注意到调用helper函数不需要实际的括号,python实际上也不允许在函数名的末尾打问号。。。。那么,这是用python实现的,还是我只是在浪费时间试图弄明白这一点

提前感谢ipython使用,您可以自定义语法解析并创建新的ipython fork


可能有帮助

这不是你想象的那样。ipython将命令提示符输入读取为一行文本,因此在将其传递到
eval
(或其他)之前,它有机会检查它是否以问号结尾。如果是,它将运行
help(name)
,而不是您键入的内容


AST看起来有点笨重,但是您可以通过查看模块
code
来了解它是如何工作的。它为您提供了一个轻量级解释器,您可以根据需要使用这种语法进行扩展。

查看
IPython.core.inputsplitter
模块,了解解析原始输入行的代码,如?、!、/、%,等等。

差不多-事实上它将其翻译成
get_ipython().magic(u'pinfo name')
。您可以使用
%hist-t
查看已翻译的命令。它确实使用AST,但不是为此使用AST-在生成AST之前,代码必须是有效的Python语法,而
name?
则不是。