On 2005-12-10, Steven Bethard <[EMAIL PROTECTED]> wrote: > Antoon Pardon wrote: >> So lets agree that tree['a':'b'] would produce a subtree. Then >> I still would prefer the possibility to do something like: >> >> for key in tree.iterkeys('a':'b') >> >> Instead of having to write >> >> for key in tree['a':'b'].iterkeys() >> >> Sure I can now do it like this: >> >> for key in tree.iterkeys('a','b') >> >> But the way default arguments work, prevents you from having >> this work in an analague way as a slice. > > How so? Can't you just pass the *args to the slice contstructor? E.g.:: > > def iterkeys(self, *args): > keyslice = slice(*args) > ... > > Then you can use the slice object just as you would have otherwise.
This doesn't work for a number of reasons, 1) >>> slice() Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: slice expected at least 1 arguments, got 0 2) It doens't give a clear way to indicate the following kind of slice: tree.iterkeys('a':). Because of the follwing: >>> slice('a') slice(None, 'a', None) which would be equivallent to tree.iterkeys(:'a') -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list