On 2006-10-10, Paul Rubin <http> wrote:
> "Fredrik Lundh" <[EMAIL PROTECTED]> writes:
>> or for the perhaps-overly-clever hackers,
>> 
>>     for x in iter(lambda: foo() or None, None):
>>         process(x)
>
>   for x in takewhile(bool, (foo() for _ in repeat(None))):
>      process(x)
>
> Meh, both are ugly.

Sure, but so is IMO the current pythonic idiom.

Suppose one has the following intention in mind:

  while x = setup():
    if y = pre_process() in ErrorCondition:
      break
    post_process(y)
  else:
    NormalTermination()

The pythonic idiom for this case would then be something like:

  while 1:
    x = setup()
    if x:
      NormalTermination()
      break
    y = pre_process(x)
    if y in ErrorCondition:
      break
    post_process(y)

There was some time it seemed PEP: 315 would be implemented so
that this could have been written as:

  do:
    x = setup()
  while x:
    y = pre_process(x)
    if y in ErrorCondition:
      break
    post_process(y)
  else:
    NormalTermination()


Which IMO would have been clearer. Alas PEP 315 is deffered so
it will be probably a long time before this will be implemented.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to