Python 和 JavaScript 中 Yield 的区别
目录
- Python 和 JavaScript 中 Yield 的区别
- Python`yield`
- JavaScript`yield`
- Python`yield from`
- JavaScript`yield*`
推荐超级课程:
- Docker快速入门到精通
- Kubernetes入门到大师通关课
- AWS云服务快速入门实战
Pythonyield
在 Python 中,yield
主要用于生成器函数。生成器函数是一个返回迭代器的特殊函数,yield
可用于每次生成一个值。
def generator_example():yield 1yield 2yield 3gen = generator_example()
print(next(gen)) # 出力: 1
print(next(gen)) # 出力: 2
print(next(gen)) # 出力: 3
JavaScriptyield
在 JavaScript 中,yield
用于function*
使用以下定义的生成器函数中yield
暂停生成器的执行并向调用者返回一个值。
function* generatorExample() {yield 1;yield 2;yield 3;
}const gen = generatorExample();
console.log(gen.next().value); // 出力: 1
console.log(gen.next().value); // 出力: 2
console.log(gen.next().value); // 出力: 3
Pythonyield from
在Python中yield from
,它用于从其他生成器或可迭代对象中获取值。
def sub_generator():yield 1yield 2yield 3def main_generator():yield from sub_generator()yield 4gen = main_generator()
print(next(gen)) # 出力: 1
print(next(gen)) # 出力: 2
print(next(gen)) # 出力: 3
print(next(gen)) # 出力: 4
JavaScriptyield*
JavaScriptyield from
没有与 Python 相同的功能,但yield*
它有一个类似的关键字:这可以用于从其他生成器函数中获取值。
function* subGenerator() {yield 1;yield 2;yield 3;
}function* mainGenerator() {yield* subGenerator();yield 4;
}const gen = mainGenerator();
console.log(gen.next().value); // 出力: 1
console.log(gen.next().value); // 出力: 2
console.log(gen.next().value); // 出力: 3
console.log(gen.next().value); // 出力: 4