当我们创建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
语句来定义生成器函数。