Verbose and flexible args and kwargs syntax
Terry Reedy
tjreedy at udel.edu
Mon Dec 12 16:58:33 EST 2011
More information about the Python-list mailing list
Mon Dec 12 16:58:33 EST 2011
- Previous message (by thread): Verbose and flexible args and kwargs syntax
- Next message (by thread): Verbose and flexible args and kwargs syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 12/12/2011 12:12 PM, Eelco wrote: > Im not sure if this is a genuine understanding, or trollish > obtuseness. If you are referring to what I write, it is based on genuine understanding of Python. > Yes, the target can be anywhere in the sequence. And yes, the > resulting list can contain objects of any type, so its very flexible > in that regard too. > > But to relate it to the topic of this thread: no, the syntax does not > allow one to select the type of the resulting sequence. It always > constructs a list. One use case of *target is to ignore the stuff collected in the target because one only wants a few end values from the iterable. Another is to pull stuff out because one wants to iterate through the rest. For both uses, a list is as good as anything. > Yes, we can cast the list to be whatever we want on the next line, Convert. For the very few cases one wants to do this, it is quite adequate. > but the question is whether this language design can be improved upon. Not easily. > The choice of a list feels arbitrary, On the contrary, a list is precisely what is needed to collect an indefinite number of leftovers. > adding another line to cast it to > something else would be even more verbose, and whats more, there would > be serious performance implications if one should seek to apply this > pattern to a deque/linkedlist; it would make taking off the head/tail > of the list from a constant to a linear operation. For a linked list, no *target and no copying is needed: head, tail = llist >>>> head, deque(tail) = somedeque > > Is better in every way I can think of (readability, consistence, > performance) than: >>>> head, *tail = somedeque >>>> tail = deque(tail) But your suggestion is much worse in each way than head = somedeque.popleft() To repeat, there is no reason to copy even once. If one does not want to mutate the deque, then one mutates an iterator view of the deque. -- Terry Jan Reedy
- Previous message (by thread): Verbose and flexible args and kwargs syntax
- Next message (by thread): Verbose and flexible args and kwargs syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list