当我在elpy中使用emacs时,几乎每次我通过输入以下命令开始为函数编写代码:
foo_func(我自动进入底部窗口:
:container.foo_func(x, y, z=None)但是当我尝试使用像枚举或排序这样的内置类型时
enumerate(
list.sort(我在elpy中没有得到那个漂亮的参数列表。如果不是,那么有一些方法可以通过编写一个调用来实现,比如:
>dir(enumerate)
>inspect.signature(enumerate)感谢任何提前提出的建议
发布于 2017-07-30 22:40:32
不,一些内置函数(用C实现)不提供为它们创建签名所需的元数据。有些人这样做(那些在CPython中被转换为使用参数诊所的人这样做),而另一些人不这样做。
这在inspect.signatures documentation中也有说明:
注意:在某些Python语言的实现中,某些可调用的代码可能是不可内省的。例如,在CPython中,一些用C定义的内置函数没有提供关于其参数的元数据。
举个例子:
>>> signature(sorted)
<Signature (iterable, /, *, key=None, reverse=False)>
>>> signature(enumerate)
ValueError: no signature found for builtin type <class 'enumerate'>因此,您需要查阅这些文档(可能存在使用这些文档的emacs插件?)
发布于 2017-08-01 01:08:04
感谢你在上面的帮助。
Elpy为文档提供了单一的界面。C-c C-d ( Elpy -doc)当point位于符号上时,Elpy将尝试查找该对象的文档,并显示该文档。如果由于某种原因找不到文档,它将尝试在pydoc中查找该符号。如果它也不在那里,它将提示用户输入一个字符串以在pydoc中查找。有了前缀参数,Elpy将跳过所有猜测,只提示用户输入要在pydoc中查找的字符串。
enumerate( #我按了C-c C-d
enumerate():
枚举(可迭代,开始)索引的->迭代器,可迭代的值
返回一个枚举对象。iterable必须是另一个支持迭代的对象。enumerate对象生成包含计数(从start开始,默认为0)和由iterable参数生成的值的对。enumerate对于获取索引列表很有用:(0,seq2),(1,seq1),(2,seq),...
https://stackoverflow.com/questions/45400945
复制相似问题