在Python中,`yield`是一个用于创建生成器(generator)的关键字。生成器是一种特殊的迭代器,它允许我们逐个产生序列中的值,而不是一次性加载整个序列。这使得在大量数据或无限序列的情况下,我们可以节省内存并提高效率。
下面是一个简单的例子来展示如何使用`yield`关键字:
```python
def simple_generator():
yield 1 # 产生值 1
yield 2 # 产生值 2
yield 3 # 产生值 3
# 创建生成器对象
gen = simple_generator()
# 使用for循环遍历生成器对象,它会逐个产生值
for value in gen:
print(value) # 输出:1,2,3
```
在这个例子中,我们定义了一个简单的生成器函数`simple_generator()`。我们使用`yield`关键字在该函数中产生了几个值。然后我们通过调用这个函数并把它赋值给一个变量来创建一个生成器对象。最后,我们可以使用for循环遍历这个生成器对象,它会逐个产生我们之前通过`yield`定义的值。
值得注意的是,每次调用生成器函数时都会创建一个新的生成器对象。这意味着我们可以多次遍历同一个生成器函数产生的序列。例如:
```python
def counting_generator():
count = 0
while True: # 生成无限序列
yield count # 产生当前计数器的值
count += 1 # 增加计数器的值
gen = counting_generator() # 创建生成器对象
for i in range(5): # 仅遍历五次该生成器对象
print(next(gen)) # 使用next函数获取下一个值并打印出来
```
在这个例子中,我们创建了一个无限序列的生成器函数`counting_generator()`。然后我们通过使用`next()`函数和循环来遍历这个生成器对象五次。每次调用`next()`函数时,都会从生成器中获取下一个值。因为我们的生成器是无限序列的,所以我们可以不断地调用`next()`函数来获取新的值。