Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #4337
| From | Mike Müller <mmueller@python-academy.de> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] Schleifen die ohne Durchlaufen des Schleifenkörpers beendet wurden |
| Date | 2016-03-29 17:47 +0200 |
| Organization | Python Academy GmbH & Co. KG |
| Message-ID | <mailman.157.1459266454.28225.python-de@python.org> (permalink) |
| References | (3 earlier) <A201B172-63F7-484B-80FB-EB92999275A7@darwin.in-berlin.de> <533CBF60-D919-4211-8155-ACC90B848839@web.de> <56F47AD1.5040008@chrisarndt.de> <56F525AC.10600@python-academy.de> <56F93B79.4090008@chrisarndt.de> |
[Multipart message — attachments visible in raw view] - view raw
Am 28.03.16 um 16:11 schrieb Christopher Arndt:
> Am 25.03.2016 um 12:49 schrieb Mike Müller:
>> object() ist der Sentinel schlechthin.
>
> Stimmt, das hatte ich mir noch gar nicht so bewusst gemacht.
>
>> Alle Funktionen haben immer einen Rückgabewert. Damit muss ich `i`
>> nicht zwingend als Argument mitgeben.
>
> Das habe ich nicht verstanden. Wenn man über eine Kollektion iteriert,
> will man doch meistens mit jedem Element irgendetwas machen, muss es
> dann also auch an die Verarbeitungsfunktion übergeben.
In den meisten Fällen ja. Es könnte aber auch sein, dass ich einfach
etwas so oft tun will wie Elemente in der Kollektion sind.
Zum Beispiel zu was:
for _ in range(len(collection)):
# mach was
aber halt ohne `len`:
for i in collection:
# mach was
> Und ob ich das Element an die Verarbeitungsfunktion übergebe oder nicht,
> hat doch nichts mit ihrem Rückgabewert zu tun.
> Vielleicht kannst du nochmal erklären, was du meinst?
Du hast Recht. In deinem Beispiel ändert sich `i` ja sobald eine
Schleife aktiv war. Also hat auch die Änderung von `i` nichts mit
dem Aufruf der Funktion zu tun. Das Testen auf die Änderung des
Rückgabewertes bringt also keinen Vorteil außer in diesem äußerst
konstruierten Fall. (Dies Beispiel ist von der python-ideas Liste.
Ich habe einfach mal nach der von Sven angesprochenen Diskussion
gesucht):
item = object()
counter = 0
for item in locals().values():
counter += 1
print(counter)
if item is item:
print('no loop')
Ausgabe:
41
no loop
Das jemand innerhalb einer Funktion eine globale Variable mit
dem Namen `sentinel` anlegt geht natürlich auch. Ich bin
aber grundsätzlich geben `global`. ;)
Mike
>
>
> Chris
>
>
>
> _______________________________________________
> python-de maillist - python-de@python.org
> https://mail.python.org/mailman/listinfo/python-de
>
Back to de.comp.lang.python | Previous | Next | Find similar
Re: [Python-de] Schleifen die ohne Durchlaufen des Schleifenkörpers beendet wurden Mike Müller <mmueller@python-academy.de> - 2016-03-29 17:47 +0200
csiph-web