Seite 1 von 1

yield

Verfasst: Mittwoch 8. Juli 2015, 13:36
von Daikoku

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 ?

Re: yield

Verfasst: Mittwoch 8. Juli 2015, 14:01
von Sirius3
@Daikoku: foo_yield ist keine Funktion sondern ein Generator. Alle weiteren Fragen beantworten, wenn Du nachliest, was Generatoren sind.