返回空迭代器而不是None是不好的Python样式?

时间:2013-02-01 03:56:20

标签: python iterator generator

关于这一点的看法似乎很复杂 - 有没有Pythonic“正确的方法”来做这件事?

2 个答案:

答案 0 :(得分:7)

我认为空迭代器更好,因为迭代过零比第一次检查返回的值是否为None然后迭代或不迭代更快。

for x in function():
    do_something()

value = function()
if value is not None:
    for x in value:
        do_something()

看看这个。

通常你也不会使用None初始化iter属性,但是使用空的iter对象。

self.list_of_users = []

self.list_of_users = None

答案 1 :(得分:5)

我被教导要遵循的一般做法是为输入域中的所有有效值返回相同的数据类型,如果可以的话。它使其他人更容易使用您的代码,您的文档将更清晰。对于有效输入域之外的值,请引发异常。

在这种情况下,空迭代器而不是None似乎是更好的做法。我知道其他编程语言喜欢在这些实例中返回null,但我没有看到在你描述的场景中这样做的好处。