Python 是否有人成功使用了';收益率';Grinder 3的jython脚本中的关键字?

Python 是否有人成功使用了';收益率';Grinder 3的jython脚本中的关键字?,python,jython,yield,grinder,Python,Jython,Yield,Grinder,我有这个功能: def ngrams(word): for i in range(1, len(word) + 1): yield word[:i] …我犯了个错误 2012-03-09 19:37:31,928 ERROR worker-bootstrap: Error running worker process net.grinder.scriptengine.jython.JythonScriptExecutionException: SyntaxError:

我有这个功能:

def ngrams(word):
    for i in range(1, len(word) + 1):
        yield word[:i]
…我犯了个错误

2012-03-09 19:37:31,928 ERROR worker-bootstrap: Error running worker process
net.grinder.scriptengine.jython.JythonScriptExecutionException: SyntaxError: ('invalid syntax', ('C:\\grinder-3.7.1\\lib
\\.\\nb-romg-file-store\\current\\grinder_test.py', 72, 15, '        yield word[:i]  '))
        (no code object) at line 0

有什么方法可以让
产生
效果吗?我在
jython
控制台中尝试了相同的功能-如果工作正常。

在jython的旧版本中,生成器(使用
yield
关键字的函数)默认不可用。您可以尝试通过添加

from __future__ import generators
到源文件的顶部。如果这不起作用,您可能运气不好,生成器在Jython的那个版本中根本不可用。在这种情况下,您可以尝试使用列表模拟行为:

def ngrams(word):
    result = []
    for i in range(1, len(word) + 1):
        result.append(word[:i])
    return result

这非常难看,但即使在最古老的Python实现中也应该可以使用。

他们使用的是哪个Jython版本?顺便说一句,这不是一个n-grams生成器。它是一个前缀生成器。