Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #4384
| From | Stefan Schwarzer <sschwarzer@sschwarzer.net> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] Link zu python-ideas "Control Flow - Never Executed Loop Body" |
| Date | 2016-04-09 09:33 +0200 |
| Message-ID | <mailman.109.1460187540.2253.python-de@python.org> (permalink) |
| References | (7 earlier) <57055E23.40602@inqbus.de> <57058FD3.90400@mail.de> <5705FBB9.4040301@sschwarzer.net> <5706660B.3030905@thomas-guettler.de> <5708B057.9090405@sschwarzer.net> |
On 2016-04-07 15:52, Thomas Güttler wrote:
> Link zu python-ideas "Control Flow - Never Executed Loop Body"
>
> https://groups.google.com/d/msg/python-ideas/RPAaSTN0Avw/FUneVrpZIwAJ
Thomas, vielen Dank! :-)
Ich habe mir das mal durchgelesen. Als wichtige Erkenntnisse
bleiben:
- Es ist nicht _allgemein_ möglich, in ein Iterable
"hineinzusehen", um festzustellen, ob es leer ist. Dazu
muss man den Iterator nach dem ersten Wert fragen. Wenn
man das in einer Hilfs-Funktion "versteckt", kann das zu
unangenehmen Überraschungen führen.
- Der Ansatz mit Sentinel,
item = sentinel = object()
for item in iterable:
...
if item is sentinel:
...
wird mitunter als deutlich schwerer verständlich angesehen
als eine Variante mit explizitem Flag:
has_items = False
for item in iterable:
has_items = True
...
if has_items:
...
Mir ist zum Sentinel-Ansatz noch eine Variante eingefallen,
die den Code hoffentlich verständlicher macht. Genauso, wie
man ein Flag nicht `flag` nennt, sondern zum Beispiel
`is_valid` oder `has_items`, kann und sollte man auch einen
spezielleren Namen als `sentinel` verwenden. Mein Vorschlag:
item = unset = object()
for item in iterable:
...
if item is unset:
...
Das ist meines Erachtens schöner "ausführbarer Pseudocode". :-)
Viele Grüße
Stefan
Back to de.comp.lang.python | Previous | Next | Find similar
Re: [Python-de] Link zu python-ideas "Control Flow - Never Executed Loop Body" Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2016-04-09 09:33 +0200
csiph-web