( Spyder开发人员在这里 )
我的答案:
是否应该启用任何特定配置才能使其正常工作?
在Spyder
3.1中,我们添加了该
numpydoc库以改善某些对象(例如Matplotlib图形和NumPy数组)的完成度。如果数据框补全对您不起作用(对我来说),请在Github上的问题跟踪器中打开一个问题以跟踪并解决此问题。
有人可以在自动补全方面说明什么是有效的,什么是无效的正式词(例如,哪些特定模块在编辑器中起作用,哪些不起作用?)
当对象是用C / C ++ / Fortran而不是Python开发的函数或方法生成时,最困难的部分是获得定义的完成。我的意思是
import numpy as npa = np.array([])a.<TAB>
就像我说的那样,这现在应该适用于数组,图形和数据框,但不适用于所有库(并且大多数科学Python库都是在C / C ++ /
Fortran中创建的,并且为了提高速度而封装在Python中)。
问题是我们使用的完成库(Rope和Jedi)不能很好地处理这种情况,因为
array(例如)不能以静态方式进行自省(即,不运行涉及它的代码)。因此,我们必须诉诸分析
arraydocstring的技巧,以查看其返回类型并进行内省。
在使用Spyder自动完成时,编辑器和Ipython控制台之间的区别在技术方面有哪些?
最重要的区别是,在IPython控制台中,您 必须先 运行代码,然后才能完成它。例如,请在全新的IPython控制台中运行
In [1]: import pandas as pd ...: df = pd.Da<Tab>
并且您会看到它 不会为 您返回任何完成
Da(显然它应该返回
Dataframe)。
但是,经过评估后,获得完成非常简单。您可以简单地运行
dir(pd)
获得它们(这就是IPython在内部所做的事情)。
另一方面,Spyder的编辑器没有控制台可以运行代码,因此必须通过在代码中运行静态分析工具(例如Jedi和Rope)来获得完成功能。正如我所说,他们会在不运行代码的情况下自省代码。尽管它们对于纯Python代码非常有效,但它们具有我在上文中针对已编译库描述的问题。
尝试评估您在编辑器中拥有的代码以完成 *** 作通常不是一个好主意,因为:
它不一定总是有效的Python代码。例如,假设您在某处留下了一个未封闭的括号,但您想在其他位置获得补全。那应该没有问题,对吧?
这可能涉及到非常昂贵的计算(例如,在数据帧中加载巨大的CSV),因此每次都要对它进行评估以获得完成(这是必须的,因为每次您要求完成时您的代码都不同)可能会消耗所有RAM。眨。
很高兴知道为什么Rodeo(另一个IDE)的自动补全效果更好
我上次检查(几年前)时,Rodeo评估了您的代码以获取完成。但是,我们将看看他们现在在做什么,看看是否可以改善完井机械。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)