Raymond Hettinger wrote: > [Ron Adam] > >>Currently we can implicitly unpack a tuple or list by using an >>assignment. How is that any different than passing arguments to a >>function? Does it use a different mechanism? > > > It is the same mechanism, so it is also only appropriate for low > volumes of data: > > a, b, c = *args # three elements, no problem > f(*xrange(1000000)) # too much data, not scalable, bad idea > > Whenever you get the urge to write something like the latter, then take > it as cue to be passing iterators instead of unpacking giant tuples. > > > Raymond
Ah... that's what I expected. So it better to transfer a single reference or object than a huge list of separated items. I suppose that would be easy to see in byte code. In examples like the above, the receiving function would probably be defined with *args also and not individual arguments. So is it unpacked, transfered to the function, and then repacked. or unpacked, repacked and then transfered to the function? And if the * is used on both sides, couldn't it be optimized to skip the unpacking and repacking? But then it would need to make a copy wouldn't it? That should still be better than passing individual references. Cheers, Ron -- http://mail.python.org/mailman/listinfo/python-list