假设我有两个函数:
def foo():
return 'foo'
def bar():
yield 'bar'
第一个是普通函数,第二个是生成器函数。现在我想写类似于这样的内容:def run(func):
if is_generator_function(func):
gen = func()
gen.next()
#... run the generator ...
else:
func()
一个简单的is_generator_function()
实现会是什么样子?我可以使用types
模块测试gen
是否为生成器,但我希望在调用func()
之前这样做。
现在考虑以下情况:
def goo():
if False:
yield
else:
return
goo()
的调用将返回一个生成器。我假设Python解析器知道goo()
函数有一个yield语句,并且我想知道是否可以轻松地获取该信息。
谢谢!
yield
语句,那么该函数内的return
语句不允许有参数。它必须是仅含return
的形式,用于终止生成器。很好的问题! - Greg Hewgill