Heisenberg strikes again!
neeson
google at elesi.org
Wed Sep 10 16:54:10 EDT 2003
Alright, I'm fairly new to Python, and this one has got me stumped.
I've just started to write a cli program that'll use readline, and
I've attached the relevant bits.
Here's the mystery: If I so much as /look/ at the list 'matches',
readline stops working. Run the program, hit tab at the prompt,
you'll get 'one', which is incorrect, as there are in fact four
possible completions. Now comment out the line that I've marked
(which, incidentally, does nothing). /Now/ it works.
Is there some very strange side effect to accessing a list element
that I'm unaware of? I've tried it in two different versions of
Python.
Any elightenment would be appreciated...
Heath
ps In terms of being useful, this program doesn't make any sense. I'm
not trying to get it to work, I'm looking to understand why the
commented line affects the rest of the code.
#!/usr/bin/python
import readline
import sys
commands = ["one", "two", "three", "four"]
matches = []
def comp(text, state):
if state == 0:
matches = []
n = len(text)
for cmd in commands:
if cmd[:n] == text:
matches.append(cmd)
throwaway = matches[0] # <--- Comment out this line
return commands[state]
readline.set_completer(comp)
readline.parse_and_bind("tab: complete")
while 1:
try:
line = raw_input("> ")
except EOFError:
print "\n",
sys.exit()
print ": %s" % line
More information about the Python-list
mailing list