5

对此的看法似乎参差不齐——是否有 Pythonic 的“正确方法”来做到这一点?

4

2 回答 2

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
于 2013-02-01T04:05:27.287 回答
5

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

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

于 2013-02-01T05:02:21.740 回答