本文引用自霍格沃兹测试开发学社录播课
经典面试题-迭代器与生成器分别是什么
霍格沃兹测试开发
http://ceshiren.com
问题
面试官可能会问:Python 中迭代器与生成器分别是什么?
考察点分析
面试官主要的目的是想要了解:
- 迭代器和生成器的实现原理
- python 使用水平
技术点
这个问题涉及到的技术知识为:
- Python 迭代器的定义和实现
- Python 生成器的定义和特点
- 迭代器和生成器的联系和区别
迭代器 iterator
- Python 迭代器
class PowTwo:
"""2的指数迭代器"""
def __init__(self, max=0):
self.max = max
def __iter__(self):
self.n = 0
return self
def __next__(self):
if self.n <= self.max:
result = 2 ** self.n
self.n += 1
return result
else:
raise StopIteration
numbers = PowTwo(3) # 实例化
i = iter(numbers) # 获得一个迭代器
print(next(i)) # 获取下一个元素
生成器 generator
- 生成器
def my_gen():
n = 1
# 生成器函数包含yield语句
yield n
n += 1
yield n
n += 1
yield n
# 使用for循环遍历
for item in my_gen():
print(item)
总结
面试官可能会问:Python 中迭代器与生成器分别是什么?
- 联系
- 生成器是迭代器的子类,因此生成器是一个迭代器。
- 生成器是创建迭代器的一种简便方式
- 区别
- 迭代器可以通过定义一个类来实现,而生成器不需要定义成类;
- 生成器的语法中可以使用 yield 表达式,但迭代器中不可以;
- 生成器的语法更加简练,而自定义的迭代器类代码较多: