Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #4395

[Python-de] Fwd: Re: Syntax-Erweiterung für Schleifen in Python3

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Achim Domma <domma@procoders.net>
Newsgroups de.comp.lang.python
Subject [Python-de] Fwd: Re: Syntax-Erweiterung für Schleifen in Python3
Date Sun, 10 Apr 2016 21:49:56 +0200
Lines 60
Message-ID <mailman.14.1460317799.6211.python-de@python.org> (permalink)
References <570AAE64.1030109@procoders.net>
Mime-Version 1.0
Content-Type text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding 8bit
X-Trace news.uni-berlin.de 7TIdoffQv3CEOp5/ilTmzQqF4nbNP6bRxaCV8Evf6oIg==
Return-Path <domma@procoders.net>
X-Original-To python-de@python.org
Delivered-To python-de@mail.python.org
X-Forwarded-Message-Id
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1
X-PPP-Message-ID <20160410194957.3616.6808@webhosting05.marketing-thom.de>
X-PPP-Vhost procoders.net
X-BeenThere python-de@python.org
X-Mailman-Version 2.1.21
Precedence list
List-Id Die Deutsche Python Mailingliste <python-de.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-de>, <mailto:python-de-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-de/>
List-Post <mailto:python-de@python.org>
List-Help <mailto:python-de-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-de>, <mailto:python-de-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID <570AAE64.1030109@procoders.net>
Xref csiph.com de.comp.lang.python:4395

Show key headers only | View raw


On Saturday, 09 April, 2016 09:19 AM, Stefan Schwarzer wrote:

> Ich habe darüber nachgedacht, aber mir ist kein besserer
> Ansatz eingefallen wie in den schon geschriebenen Antworten.
[...]
> Fällt euch noch etwas ein?

Ich würde gerne mal einen realen Anwendungsfall sehen. Zumindest ist das 
die Frage, die ich einem Kollegen stellen würde, der mit dem Problem auf 
mich zu kommt. Für mich "riecht" die Frage nach einem verstecken 
Workaround für ein anderes Problem.

Meiner Ansicht nach unterwandert die Fragestellung etwas das abstrakte
Konzept eines Iterators. Eine Iterator liefert "on demand" Werte und
eine For-Schleife verarbeitet sie "stupide" einen nach dem anderen. Die
"Buchhaltung" ob der Iterator je ein Ergebnis geliefert hat,
interessiert normal nicht, wird her aber gewünscht. Meiner Ansicht nach
ist die For-Schleife der falsche Platz. Ich würde das im Iterator lösen
und hab' mal ganz auf die Schnelle folgendes zusammengehackt:

class Wrapper():
     def __init__(self, it):
         self.it = it
         self.called = False

     def __iter__(self):
         return self

     def __next__(self):
         nxt = self.it.__next__
         result = nxt()
         self.__next__ = nxt
         self.called = True
         return result

empty = Wrapper(iter([]))

for x in empty:
     print(x)

print(empty.called)

not_empty = Wrapper(iter([1,2,3]))

for x in not_empty:
     print(x)

print(not_empty.called)

Das kann man sicher noch schöner schreiben. Ich hatte auch überlegt,
keine eigene Klasse zu verwenden, sondern einen Generator und die
"called" property am original Iterator zu setzen. Beides hat Vor- und
Nachteile. Meine Entscheidung würde wohl vom konkreten Problem und
dessen Scope abhängen.

Grüße,
Achim


Back to de.comp.lang.python | Previous | Next | Find similar


Thread

[Python-de] Fwd: Re:  Syntax-Erweiterung für Schleifen in Python3 Achim Domma <domma@procoders.net> - 2016-04-10 21:49 +0200

csiph-web