【发布时间】:2019-12-01 11:09:29
【问题描述】:
下面的代码使用上下文管理器来确保始终执行代码“设置”和“关闭”。我无法理解 yield 关键字在这里扮演什么角色以及 bar 参数是如何声明的。
@contextmanager
def function(foo):
# set something up
def nestedfunction(bar):
# do something with bar
pass
try:
yield nestedfunction
finally:
# shut things down
函数会被如下调用
reporter = function(foo)
【问题讨论】:
-
那么你知道什么是yield以及如何使用吗?
-
@Wonka 我想我理解在 for 循环返回生成器的上下文中使用 yield 关键字。但是我不明白它在这里的用途,它返回一个函数对象。
-
所以当你可以使用 return 时,可能你正在使用 yield?
-
我想我已经通过接触闭包的想法解决了我的问题,这解释了为什么没有传递任何参数geeksforgeeks.org/python-closures
-
您查看过
contextmanager的文档吗?
标签: python function nested arguments yield