Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #4387
| Path | csiph.com!2.eu.feeder.erje.net!feeder.erje.net!1.eu.feeder.erje.net!newsfeed0.kamp.net!newsfeed.kamp.net!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Christian Tanzer <tanzer@swing.co.at> |
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] Syntax-Erweiterung für Schleifen in Python3 |
| Date | Sat, 09 Apr 2016 10:54:51 -0000 |
| Lines | 71 |
| Message-ID | <mailman.113.1460200687.2253.python-de@python.org> (permalink) |
| References | <5708ACF0.3030708@sschwarzer.net> <E1aoqXT-0003qn-L8@swing.co.at> |
| Reply-To | Christian Tanzer <tanzer@swing.co.at> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8 |
| Content-Transfer-Encoding | 8bit |
| X-Trace | news.uni-berlin.de VKTz359DKbJntfS+RFoY1g0AJXQCpKl+Q3FXwOewVG3w== |
| Return-Path | <tanzer@swing.co.at> |
| X-Original-To | python-de@python.org |
| Delivered-To | python-de@mail.python.org |
| X-Mailer | PMA 0.8.0 |
| In-reply-to | Your message of "Sat, 9 Apr 2016 09:19:12 +0200" <5708ACF0.3030708@sschwarzer.net> |
| X-Spambayes-Classification | ham; 0.00 |
| Resent-From | Christian Tanzer <tanzer@swing.co.at> |
| Resent-To | python-de@python.org |
| Resent-Content-Type | text/plain; charset=utf-8 |
| Resent-date | Sat, 09 Apr 2016 10:56:04 -0000 |
| Resent-message-id | <146019936455.14903.10247271703753298197@tr.swing.cluster> |
| 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 | <E1aoqXT-0003qn-L8@swing.co.at> |
| X-Mailman-Original-References | <5708ACF0.3030708@sschwarzer.net> |
| X-Original-Content-Transfer-Encoding | 8bit |
| Xref | csiph.com de.comp.lang.python:4387 |
Show key headers only | View raw
Stefan Schwarzer wrote at Sat, 9 Apr 2016 09:19:12 +0200:
> > - Bevor man über Syntax-Erweiterungen nachdenkt, sollte man
> > meines Erachtens erst mal schauen, ob man nicht eine
> > Möglichkeit findet, diese Schleifen-Sonderfälle mit einer
> > jetzt schon funktionierenden Python-API zu behandeln. Es
> > kann natürlich sein, dass das schwerfällig wird, aber ich
> > finde es besser, das auszuprobieren als es nur zu
> > vermuten. :-)
>
> Ich habe darüber nachgedacht, aber mir ist kein besserer
> Ansatz eingefallen wie in den schon geschriebenen Antworten.
>
> Ein Kontextmanager fällt aus, da bei einem `with`-Statement
> der Block nur einmal durchlaufen werden kann.
>
> Den Schleifenrumpf zu einer Funktion zu machen und in eine
> Higher-Order-Function hineinzureichen wird deutlich
> komplizierter als der schon beschriebene Ansatz mit Flag
> oder Sentinel.
>
> Fällt euch noch etwas ein?
Sicher. Generator-Funktionen sind das Mittel der Wahl, um sowas zu
abstrahieren.
Beispielsweise ::
def iter_with_setup(iterable, setup_fct):
it = iter(iterable)
first = next(it)
setup_fct(first)
yield first
for item in it:
yield item
In Python 3.3+ kann man die Schleife durch ein
yield from it
ersetzen::
Python 3.5.1 (default, Dec 30 2015, 11:41:55)
[GCC 4.9.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> def iter_with_setup(iterable, setup_fct):
... it = iter(iterable)
... first = next(it)
... setup_fct(first)
... yield first
... yield from it
...
>>> def setup_example(x) :
... print("setup_example called:", x)
...
>>> for x in iter_with_setup(range(3), setup_example):
... print(x)
...
setup_example called: 0
0
1
2
>>> for x in iter_with_setup(range(0), setup_example):
... print(x)
...
>>>
Viele Grüsse,
--
Christian Tanzer http://www.c-tanzer.at/
Back to de.comp.lang.python | Previous | Next | Find similar
Re: [Python-de] Syntax-Erweiterung für Schleifen in Python3 Christian Tanzer <tanzer@swing.co.at> - 2016-04-09 10:54 +0000
csiph-web