iCo*_*dez -3 python yield return function python-2.x
我希望您考虑以下代码:
def func(alist):
if len(alist) == 1:
return arg * 2
for item in alist:
yield item * 2
Run Code Online (Sandbox Code Playgroud)
运行它时,出现以下错误:
SyntaxError: 'return' with argument inside generator
Run Code Online (Sandbox Code Playgroud)
现在,我意识到我无法做到这一点。但是,我想知道为什么。到底是什么导致Python抛出SyntaxError
?
Python必须在编译字节码时确定函数是否为生成器。这是因为生成器的语义表明,生成器函数中的任何代码都不会在第一个next
调用之前运行。生成器函数返回生成器迭代器,该生成器迭代器在next
被调用时运行生成器代码。因此,Python无法运行某个函数,直到它碰到a yield
或a 为止,才能确定该函数是否应该是生成器return
。而是,yield
函数中存在a 表示该函数是生成器。
归档时间: |
|
查看次数: |
1375 次 |
最近记录: |