Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Stefan Schwarzer Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Link zu python-ideas "Control Flow - Never Executed Loop Body" Date: Sat, 9 Apr 2016 09:33:43 +0200 Lines: 50 Message-ID: References: <57040A52.9020404@thomas-guettler.de> <5704A110.4030006@behnel.de> <6E439C3C-FC40-4CAA-827C-8ACDE3DC85F2@zopyx.com> <57051734.6020207@thomas-guettler.de> <57051C5F.1080808@chrisarndt.de> <570553C5.80101@sschwarzer.net> <57055E23.40602@inqbus.de> <57058FD3.90400@mail.de> <5705FBB9.4040301@sschwarzer.net> <5706660B.3030905@thomas-guettler.de> <5708B057.9090405@sschwarzer.net> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de OdAN7n/cZQxrWYN+oxqj4Aan5YjwhpMaKcbH/MsIgLMA== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org X-Enigmail-Draft-Status: N1110 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 In-Reply-To: <5706660B.3030905@thomas-guettler.de> X-Provags-ID: V03:K0:RJHupe6srTh5ox6/65B+kDmdEQwZh5zfJ0q80LfUI8LbXBLReXv 8pQf0PaGTv5S60Zl7sFKu9rH0PO2UPfPR28Mimi/f9foHZTXy/HQHvl1hZC7k8t05wvoDeZ rWKJd9bBguekwY2M4mAF5JNpvicKZ1OAwQHWg/AMcCukIpmZFXPrEjYqteMzDh7rwzOkAEg C33wYC7YjfCUA/MnYZh7Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:6wrtBFb3zrU=:wZn47KMU/3aL9C+5KSar98 bYEE2IoIJ5vacJc/r79FP53PJgUue3GtEob4BAJ9h/WYj68WCOJ/bnS74RZVa8kdaM+f+JMn5 ZQOJcU8DQGcVLtTo+1LjyPwYmBXD6YvdgBbpF4cy/P3RpXtU7CHH8dRlHtMpqUUxr6nUE085A yxHIdUj1AmT4Ij4g2L1W+G9vuQUpZt8OfXcMUG4KCbSOaVV5PCOlreyNbgSZxy8aa17QvfjpW F7ltDqAyf6U/4SW1jgt5MEb3YWcTJxCfK7CsMZ6AdNIKtoOCnLml8RWDOkanvhgR8SlZQY2lN mnACZAR6jKIYRfwUtVXMKdNVJKz5eoJ10Znmgl9EeLnI0f8oJ8Ug0GrG9RRZ1W/cvoZWs80aw xi7HPPzwUdrHSK7eIjh1hdTBZoYDfcp2yd8ysS/j2ABC53pfXiz3eLzKjGrR9bBBb2sgHszwv O6AefobsXjrQ0JmhxxJW5etNnP2I8qF/Bj+JHD45XJ32Co/fMzNESbVUfSimlsQ9HlBL2Q5JV i0K95qrAldFGncoLwo6Rystkz0n7oZP4Z5LRzhykQW/t1kyWMujiBfJ6sOq5Joris5gGkk0th TJlPuI7n1jnU6RyjL5JO/p5Deco15fKHzGnr4ehGyTpXXy80Ge8LEn3K/X6onprFtLkiZFWP+ GeU9tRJ91XaqZVzSkw9UHEFLOUiJgBmfqHHyPUykQL+FVSMzwxCp1rXJyuZpNnlkJqxcsngl6 mi76muvKgY6LOx1v X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <5708B057.9090405@sschwarzer.net> X-Mailman-Original-References: <57040A52.9020404@thomas-guettler.de> <5704A110.4030006@behnel.de> <6E439C3C-FC40-4CAA-827C-8ACDE3DC85F2@zopyx.com> <57051734.6020207@thomas-guettler.de> <57051C5F.1080808@chrisarndt.de> <570553C5.80101@sschwarzer.net> <57055E23.40602@inqbus.de> <57058FD3.90400@mail.de> <5705FBB9.4040301@sschwarzer.net> <5706660B.3030905@thomas-guettler.de> Xref: csiph.com de.comp.lang.python:4384 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