On Wed, Oct 26, 2016 at 01:25:48AM +0100, Rob Cliffe wrote: > (2) This is admittedly a somewhat tangential argument, but: I didn't > really know what "yield from" meant. But when I read in an earlier post > that someone had proposed "yield *" for it, I had a Eureka moment.
Are you aware that "yield from it" does not just mean this...? for x in it: yield x "yield from ..." is not just "some sort of unpacking". If all it did was iterate over an iterable and yield the values, it would not have been given special syntax just to save one line. It does *much* more than just those two lines. For start, it is an expression which returns a value, so you can write: result = yield from it A full implementation of "yield from ..." would be 39 lines of Python code, according to the PEP, not two. It has to handle delegating send(), throw() and close() messages, exceptions, plus of course the obvious iteration. > Which suggests if "*" is used to mean some sort of unpacking in more > contexts, the more familiar and intuitive it may become. I guess the > word I'm groping for is 'consistency'. I think that there is zero hope of consistency for * the star operator. That horse has bolted. It is already used for: - multiplication and exponentiation - repetition - "zero or more of the previous element" in regular expressions - "zero or more of any character" in globbing - "everything" in imports - sequence unpacking - sequence packing - collecting positional and keyword arguments Some of which are admittedly *similar* uses, but the * operator does get overloaded for so many unrelated uses. -- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/