yield

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Daikoku
User
Beiträge: 66
Registriert: Montag 20. April 2015, 21:14

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf8 -*-

def foo_yield():
    for i in xrange(6):
        yield i*2

def foo_liste():
    return [i*2 for i in xrange(6)]

# Step 1
for i in foo_liste():
    print i

# Step 2
for i in foo_yield():
    print i

# Step 3
g = foo_yield()
g.send(None)

for i in g:
    print i

g.close
Hallo,

ich habe 2 kurze Fragen :
1. Warum benötige ich bei der Funktion foo_yield() kein return mit einen Rückgabewert ?
2. Warum führt Step 2 zu einem anderen Ergebnis als bei Step 3 ?
-. Step 2: 0,2,4,6,8,10 und Step 3: 2,4,6,8,10 - wo ist die 0 geblieben ?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Daikoku: foo_yield ist keine Funktion sondern ein Generator. Alle weiteren Fragen beantworten, wenn Du nachliest, was Generatoren sind.
Antworten