Douglas Alan wrote:
Wouldn't

   yield *(x for x in gen1(arg))

be sufficient, and would already be supported by the proposal at
hand?

It would, but, as Steven pointed out, the * in func(*args) results in tuple(args) being passed to the underlying function.


So I see no reason to expect "yield *iterable" to imply a for loop that yields the iterators contents. IMO, it's even more of a stretch than the tuple unpacking concept (at least that idea involves tuples!)

Whereas:

  yield x for x in iterable if condition

Maps to:
  for x in iterable:
    if condition:
      yield x

Just as:
  [x for x in iterable if condition]

Maps to:
  lc = []
  for x in iterable:
    if condition:
      lc.append(x)

And:
  (x for x in iterable if condition)

Maps to:
  def g()
    for x in iterable:
       if condition:
          yield x

And removing a couple of parentheses is at least as clear as adding an asterisk to the front :)

Cheers,
Nick.

--
Nick Coghlan   |   [EMAIL PROTECTED]   |   Brisbane, Australia
---------------------------------------------------------------
            http://boredomandlaziness.skystorm.net
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to