2015-07-12 21 views
7

Ecco come il completamento scheda sta lavorando per me:completamento Tab in ipython per gli elementi della lista

In [84]: a="string" 

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

completamento Tab per le stringhe sta lavorando qui: completamento

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 

Tab per gli elenchi sta lavorando qui:

In [86]: b. 
b.append b.count b.extend b.index b.insert b.pop  b.remove b.reverse b.sort  

completamento Tab per le stringhe non funziona qui:

In [87]: b[0]. 

Una soluzione possibile:

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 

E 'possibile usare il completamento senza soluzione indicata? Sto vivendo un comportamento simile in ipdb, è possibile risolvere questo comportamento anche lì? Sto usando ipythoon v3.1.0 e ipdb v 0.8. Grazie

risposta

5

creare ipython profilo:

ipython profile create testing 

in ipython_config.py un-commentare questa linea

# 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 

carico IPython con questo profilo:

ipython notebook --profile=testing 

Questo dà TAB completamento per membri della lista e chiavi e valori del dizionario.


Un'alternativa rapida è quella di utilizzare dir() metodo:

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'] 

Un altro metodo è quello di utilizzare Python o IPython console interattiva o editore regolare PTVS, che è in grado di fare completamenti (intellisense) sugli elementi della lista.

+0

Sì, ma questo è un altro tipo di soluzione alternativa. L'obiettivo primario è usare il tasto tab. Qualche configurazione come bash/etc/bash_completion andrebbe bene –

+0

a quanto pare funziona in PTVS IDE – denfromufa

+0

Il completamento automatico di ipython è considerato per il refactoring utilizzando jedi: https://github.com/ipython/ipython/issues/8606 – denfromufa

Problemi correlati