当我们说一个对象可以迭代时,我们是指该对象可以使用在循环中带有for
关键字的语句进行迭代。 Python 中,许多对象是可迭代的,例如:列表、元组、字符串等。
Python 的for
语句实际上利用了迭代器来对一个可迭代对象(iterable)进行遍历。 迭代器是表示数据流的对象,Python使用它来遍历可迭代对象。 迭代器包含两个基本的方法:iter()
和next()
。其中,iter() 方法返回迭代器对象本身,即一个迭代器对象,而 next() 方法返回迭代器中的下一项。
Python 中的函数也可以是可迭代的,只要函数返回可迭代对象即可。下面是两个示例代码,以说明python函数可以迭代:
def frange(start, stop, step):
x = start
while x < stop:
yield x
x += step
for i in frange(0, 1, 0.1):
print(i)
上述代码定义一个函数frange,该函数的作用是返回一个生成器对象。在for循环中,通过对该生成器对象进行迭代,可以打印出start=0,stop=1,step=0.1之间的数字。
def first_n(n):
num = 0
while num < n:
yield num
num += 1
list_num = [x for x in first_n(5)]
print(list_num)
上述代码定义了一个函数‘first_n’,该函数的作用是返回一个生成器对象,其中包括了前n个数字。最后通过列表推导式将这些数字转化为列表进行打印。
总结:Python的函数也可以是可迭代对象,只要函数返回可迭代对象即可。在for循环语句中,可以利用该可迭代对象进行遍历。 引入生成器的概念,可以让函数通过yield实现可迭代性,并在执行期间保存状态。