正如其他回答说的那样,你可以将结果累积到一个列表中并返回.另一种方法是将yield替换为yield,这会导致函数返回一个可迭代的类型对象,当你决定稍后迭代它时(可能带有for循环),它会产生你产生的项.
以下是如何在代码中使用它:
import csv
def pass_username():
with open('test.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
yield row[0]
username_generator = pass_username()
# iterate through the usernames with a for loop
for name in username_generator:
print name
# call the list constructor which causes it to produce all of the names
print list(pass_username())
请记住,用户名是在需要时生成的,因此您可以执行username_generator.next(),这将生成下一个用户名而无需生成所有用户名.