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