python函数可以迭代吗

  • Post category:Python

当我们创建Python函数时,我们可以使用yield或者return语句返回值。yield语句在Python中被称为生成器函数。使用yield语句返回一个生成器对象,生成器对象本身是可迭代的。而使用return语句返回的对象是不可迭代的。

因此,只有使用yield语句的函数才可以迭代。这种函数被称为可迭代的生成器函数。

以下是一个使用yield语句的生成器函数,它将生成自然数的序列:

def natural_numbers():
    n = 1
    while True:
        # 使用yield语句,返回n
        yield n
        n += 1

可以使用for循环来遍历生成器对象并获得每个元素,如下所示:

for i in natural_numbers():
    print(i)
    if i > 100:
        break

输出结果:

1
2
3
...
98
99
100

以上就是使用yield语句创建生成器函数的示例。当然也可以使用return语句来定义函数,如下所示:

def list_numbers(n):
    number_list = []
    for i in range(1, n+1):
        number_list.append(i)
    # 使用return语句返回number_list
    return number_list

但是这个函数返回的是一个列表对象,列表对象本身是不可迭代的。

如果我们想要使用for语句来遍历这个列表,需要使用iter函数将其转化为迭代器对象:

my_list = list_numbers(5)
my_iter = iter(my_list)

for i in my_iter:
    print(i)

输出结果:

1
2
3
4
5

所以,Python的函数可以迭代,但是必须使用yield语句来定义生成器函数。