无法将收益值传递给另一个函数

问题描述 投票:0回答:1

我具有这两个功能:

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)

我不确定如何进行此操作!

python function generator
1个回答
2
投票

yield将函数转换为生成器,每个yield是迭代器的一项。元组是另一项。因此,您的getItem返回一个可迭代的(〜序列)元组,即使它仅产生一个元组,它仍然是一个元组的迭代器。

只需将yield替换为return。或者,如果有实际的原因,则需要迭代getItem的结果。

您还可以产生单个值,以使getItem()可以迭代4个元素,但这似乎不太有用。

© www.soinside.com 2019 - 2024. All rights reserved.