gpt4 book ai didi

python - 使用 Yield 并返回错误列表

转载 作者:太空狗 更新时间:2023-10-30 00:50:33 24 4
gpt4 key购买 nike

我有一段代码(一个 xls 解析器)对字段进行一些验证并返回一个包含 xls 每一行的生成器。

现在,我必须在列表中收集验证错误,并在生成器耗尽时使用它们。

这是代表解析器和设计不佳的解决方案的一段代码。

error_list = []

def gen(limit): #xls parser
for x in range(limit):
if x%2: #fake error contition
error_list.append(x)
else:
yield(x*x) #return

有没有更pythonic的方法来做到这一点?我不太喜欢全局变量。

我很乐意尽可能多地保留代码,但如果没有其他方法,我会将函数转换为经典

def gen(limit): #xls parser
error_list = []
results = []
for x in range(limit):
if x%2: #fake error contition
error_list.append(x)
else:
results.append(x*x)
return results, error_list

最佳答案

生成器函数不能像这样返回带外数据。

我会使用一个来代替,因为一个实例给了你一些东西来保持这种额外的状态:

class XLSParser(object):
def __init__(self, limit):
self.error_list = []
self.limit = limit

def __iter__(self):
for x in range(self.limit):
if x%2: #fake error condition
self.error_list.append(x)
else:
yield(x*x) #return

并遍历该对象:

parser = XLSParser(limit)
for result in parser:
# do something

errors = parser.error_list

关于python - 使用 Yield 并返回错误列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20636147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com