我经常遇到这种问题,我知道我可以添加一些if
块来避免这个问题,但我正在寻找一个最佳实践或处理此类编程问题的好/好方法。在
当我循环函数的结果而不将结果存储在单独的变量中时,如下所示:
for item in mycustimitemgetter.itter():
dosomething()
函数返回的是None
,而不是空列表[]
,Python抛出一个异常。这是正确的python行为,没有任何问题。但我正在寻找最佳实践解决方案:
a)保持代码简洁(不要将结果存储在var和do if中!=无,等等)
b)将None
返回值视为空列表,即不要运行循环,并静默地忽略函数返回None
值的事实。在
您有一个名为
itter()
的方法,它返回一个iterable对象。我想说,给定函数的名称,“返回的值应该总是iterable”是合理的。因此,如果返回的是一个列表,那么如果没有值,则应该返回一个空列表。在要执行的代码。加上:
或者
^{pr2}$直到
itter()
实现的结尾,这取决于使用的类型。在考虑这样一个问题:你编写了代码,却面临着这个问题。如果其他人在不知道你知道什么的情况下试图使用你的代码呢。他们期待什么?在
或者,您应该使用Generators(如果合适)。它们包含一个“next”方法(请参阅链接中的文档),如果没有值,则可以返回false。在
也许,使用这样一个事实,即
[]
和None
的计算结果都为False,但包含内容的列表不会:相关问题 更多 >
编程相关推荐