网站首页 > 技术文章 正文
yield 关键字是 Python 中一个特殊关键字,用于生成器函数(generator function)中。生成器函数与普通函数的区别在于,生成器函数在遇到 yield 关键字时会暂停执行,并返回一个值。然后,当再次调用生成器函数时,会从 yield 关键字所在的位置继续执行。
生成器函数的用法
生成器函数的定义与普通函数类似,只是需要使用 yield 关键字来生成值。例如,以下代码定义了一个生成器函数,用于生成斐波那契数列:
Bash
def fib(n):
a, b = 0, 1
while n > 0:
yield a
a, b = b, a + b
n -= 1
调用生成器函数会返回一个生成器对象。生成器对象可以迭代,每次调用 next() 方法都会返回生成器函数生成的下一个值。例如:
Bash
generator = fib(5)
print(next(generator)) # 输出 0
print(next(generator)) # 输出 1
print(next(generator)) # 输出 1
print(next(generator)) # 输出 2
print(next(generator)) # 输出 3
yield 的用法
yield 关键字可以用于生成器函数中返回多个值。例如,以下代码定义了一个生成器函数,用于生成 1 到 10 的平方数:
Python
def squares(n):
for i in range(1, n + 1):
yield i * i
调用生成器函数会返回一个生成器对象。生成器对象可以迭代,每次调用 next() 方法都会返回生成器函数生成的下一个平方数。例如:
Python
generator = squares(10)
print(next(generator)) # 输出 1
print(next(generator)) # 输出 4
print(next(generator)) # 输出 9
print(next(generator)) # 输出 16
print(next(generator)) # 输出 25
print(next(generator)) # 输出 36
print(next(generator)) # 输出 49
print(next(generator)) # 输出 64
print(next(generator)) # 输出 81
print(next(generator)) # 输出 100
yield 的注意事项
- yield 关键字只能用于生成器函数中。
- 遇到 yield 关键字时,生成器函数会暂停执行,并返回一个值。
- 再次调用生成器函数时,会从 yield 关键字所在的位置继续执行。
- 生成器函数可以生成多个值。
- 生成器函数在生成完所有值后会抛出 StopIteration 异常。
yield 的应用场景
yield 关键字可以用于各种需要生成数据的场景,例如:
- 生成斐波那契数列、杨辉三角等数学序列。
- 生成无限序列,例如素数序列、二进制小数序列等。
- 生成文件内容,例如逐行读取文件内容。
- 实现协程,例如异步编程。

猜你喜欢
- 2024-12-26 Python 中的==操作符 和 is关键字
- 2024-12-26 揭秘 Python 中的 with 关键字
- 2024-12-26 简单学Python——关键字7——if、elif、else
- 2024-12-26 一文了解 Python 中的 del 关键字
- 2024-12-26 python关键字assert(断言)实例
- 2024-12-26 Python中yield关键字有什么作用
- 2024-12-26 【python编程】__all__关键字的作用
- 2024-12-26 简单学Python——关键字10——from
- 2024-12-26 学会 Python yield 关键词,此文就够了
- 2024-12-26 探索Python中的关键字
- 269℃Python短文,Python中的嵌套条件语句(六)
- 267℃python笔记:for循环嵌套。end=""的作用,图形打印
- 265℃PythonNet:实现Python与.Net代码相互调用!
- 261℃Python实现字符串小写转大写并写入文件
- 260℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 120℃原来2025是完美的平方年,一起探索六种平方的算吧
- 101℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 94℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)