避免在Python中循环None值

2024-09-29 21:46:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常遇到这种问题,我知道我可以添加一些if块来避免这个问题,但我正在寻找一个最佳实践或处理此类编程问题的好/好方法。在

当我循环函数的结果而不将结果存储在单独的变量中时,如下所示:

for item in mycustimitemgetter.itter():
   dosomething()

函数返回的是None,而不是空列表[],Python抛出一个异常。这是正确的python行为,没有任何问题。但我正在寻找最佳实践解决方案:

a)保持代码简洁(不要将结果存储在var和do if中!=无,等等)

b)将None返回值视为空列表,即不要运行循环,并静默地忽略函数返回None值的事实。在


Tags: 方法函数代码innone列表forif
2条回答

您有一个名为itter()的方法,它返回一个iterable对象。我想说,给定函数的名称,“返回的值应该总是iterable”是合理的。因此,如果返回的是一个列表,那么如果没有值,则应该返回一个空列表。在

要执行的代码。加上:

if retval is None:
  return []
return retval

或者

^{pr2}$

直到itter()实现的结尾,这取决于使用的类型。在

考虑这样一个问题:你编写了代码,却面临着这个问题。如果其他人在不知道你知道什么的情况下试图使用你的代码呢。他们期待什么?在

或者,您应该使用Generators(如果合适)。它们包含一个“next”方法(请参阅链接中的文档),如果没有值,则可以返回false。在

也许,使用这样一个事实,即[]None的计算结果都为False,但包含内容的列表不会:

for item in (mycustimitemgetter.itter() or []):
   dosomething()

相关问题 更多 >

    热门问题