Eine andere Möglichkeit wäre übrigens ein Generator: statt "return" verwendest du "yield". Beim Aufruf der "Funktion" bekommst du dann ein Generatorobjekt zurück, wo du mittels .next() das nächste Element bekommst. Alternativ kannst du auch einfach drüber iterieren. Einfaches Beispiel:
Code:
def simple():
# Absichtlich hier keine For-Schleife...
x = 0
while x < 100:
yield x
x += 1
#Möglichkeit 1 (nicht so gut)
a = simple()
print a.next() # 0
print a.next() #1
# etc. Es wird eine StopIteration-Exception geworfen, wenn du am Ende bist.
# Möglichkeit 2
for x in simple():
print x
Übrigens solltest du eines deiner C-like-Kontrukte ändern: statt
Code:
for i in xrange(len(feed['entries'])):
title = feed.entries[i].title
data = feed.entries[i].description
content = htmlparser.feed(data)
htmlparser.close()
author = feed.entries[i].author
return (title, content, author)
schreibst du besser
Code:
for entry in feed['entries']:
title = entry.title
data = entry.description
content = htmlparser.feed(data)
htmlparser.close()
author = entry.author
return (title, content, author)
Lesezeichen