文章目录
前言
先来看下面的代码:

acquire方法如下

这两段代码,就是我今天想和大家分享的三个知识点:
- with
- yield
- @contextmanager
下面,我们一起来学习这三个知识点
一、yield
1. 定义
yield 是 Python 中一个关键字,用于构造一个生成器函数。
生成器函数是一种特殊的函数,它可以在执行过程中多次返回一个值,每次返回后会暂停执行,然后再次调用时继续执行。生成器函数一般使用 yield 语句来实现这种功能。
yield 语句在生成器函数中的用法类似于 return 语句。不同之处在于,yield 会将值返回给调用者,但不会终止函数的执行。相反,它会暂停函数的执行,保存当前的状态,并在稍后恢复执行。
2. 示例一
import time
def generate_numbers():
yield 1
yield 2
yield 3
return "done"
def run_generator_numbers():
gen = generate_numbers()
try:
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
except StopIteration as e:
print(e.value)
if __name__ == '__main__':
run_generator_numbers()
这段代码是关于生成器的使用示例。首先,我们定义了一个生成器函数generate_numbers(),它使用yield语句来生成数字序列1, 2, 3。然后,在run_generator_numbers()函数中,我们创建了一个生成器对象gen,并尝试使用next()函数来逐个获取生成器中的值。
首先,我们调用next(gen)获取生成器中的第一个值1,并打印出来。接着,我们再次调用next(gen)获取生成器中的第二个值2,并打印出来。然后,我们再次调用next(gen)获取生成器中的第三个值3,并打印出来。
在这之后,我们尝试再次调用next(gen)来获取生成器中的下一个值。但是,由于生成器中没有更多的值可供获取,所以会抛出StopIteration异常。我们通过捕获该异常,并打印出异常的value属性(即生成器函数中的返回值)来结束生成器的运行。
看下效果:

2. 示例二
import

2710

被折叠的 条评论
为什么被折叠?



