以下是制表符补全对我的工作方式:

In [84]: a="string"

In [85]: b = ["str", "ing"]

字符串的制表符补全在这里起作用:
In [86]: a.
a.capitalize  a.decode      a.expandtabs  a.index       a.isdigit     a.istitle     a.ljust       a.partition   a.rindex      a.rsplit      a.splitlines  a.swapcase    a.upper
a.center      a.encode      a.find        a.isalnum     a.islower     a.isupper     a.lower       a.replace     a.rjust       a.rstrip      a.startswith  a.title       a.zfill
a.count       a.endswith    a.format      a.isalpha     a.isspace     a.join        a.lstrip      a.rfind       a.rpartition  a.split       a.strip       a.translate

列表的制表符补全在这里起作用:
In [86]: b.
b.append   b.count    b.extend   b.index    b.insert   b.pop      b.remove   b.reverse  b.sort

字符串的制表符补全在这里不起作用:
In [87]: b[0].

一种可能的解决方法:
In [88]: c = b[0]

In [89]: c.
c.capitalize  c.decode      c.expandtabs  c.index       c.isdigit     c.istitle     c.ljust       c.partition   c.rindex      c.rsplit      c.splitlines  c.swapcase    c.upper
c.center      c.encode      c.find        c.isalnum     c.islower     c.isupper     c.lower       c.replace     c.rjust       c.rstrip      c.startswith  c.title       c.zfill
c.count       c.endswith    c.format      c.isalpha     c.isspace     c.join        c.lstrip      c.rfind       c.rpartition  c.split       c.strip       c.translate

是否可以使用没有提到的解决方法的完成?我在ipdb中遇到类似的行为,是否也可以在那里修复此行为?我正在使用ipythoon v3.1.0和ipdb v 0.8。谢谢

最佳答案

创建ipython配置文件:

ipython profile create testing

ipython_config.py 中取消注释此行
# Activate greedy completion
#
# This will enable completion on elements of lists, results of function calls,
# etc., but can be unsafe because the code is actually evaluated on TAB.
c.IPCompleter.greedy = True

使用此配置文件加载IPython:
ipython notebook --profile=testing

这样可以为列表成员以及字典键和值提供TAB补全。

一种快速的替代方法是使用dir()方法:
dir(b[0])

#returns:

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

另一种方法是在PTVS中使用Python或IPython交互式控制台或常规编辑器,它能够对列表元素进行补全(智能)。

关于python - ipython中用于列表元素的制表符补全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31363407/

10-12 23:03