我具有这两个功能:
def getItems(r, c):
**do something**
**find and yield four values a, b, c, d**
yield (a,b,c,d)
def mainfunction(data):
reader = csv.reader(records)
for row in reader:
a,b,c,d = getItems(row, c)
yield (a,b,c,d)
但是,当我运行文件时,我总是收到错误消息:
a, b, c, d = getItems(r, c)
ValueError: not enough values to unpack (expected 5, got 1)
我不确定如何进行此操作!
yield
将函数转换为生成器,每个yield
是迭代器的一项。元组是另一项。因此,您的getItem
返回一个可迭代的(〜序列)元组,即使它仅产生一个元组,它仍然是一个元组的迭代器。
只需将yield
替换为return
。或者,如果有实际的原因,则需要迭代getItem
的结果。
您还可以产生单个值,以使getItem()
可以迭代4个元素,但这似乎不太有用。