Christopher Reimer writes: > For my BASIC interpreter, each line of BASIC is broken this way into > tokens. > > line_number, keyword, *expression = line.split(' ', 2) > > For a line like 10 PRINT "HELLO, WORLD!", this works as expected. > > For a line like 20 END, which doesn't have a third element for > expression, an empty list is assigned. > > By using * to unpack the split line, my program no longer crashes and > no try/except block is needed to work around the crash. A later line > of code will test the expression, ignore if empty or run regex if > full.
Yes. Consider line.split(None, 2) or line.split(maxsplit=2). You may still need to strip the third component, but at least it will *be* the third component even if the user happens to type extra spaces like this: 10 PRINT "Hello, world." And you won't get a spurious third component if the user types this: 20 END (There's trailing spaces.) -- https://mail.python.org/mailman/listinfo/python-list