有没有人成功地在 Grinder 3 的 jython 脚本中使用'yield'关键字?



我有这个功能:

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

有什么方法可以使yield工作吗?我在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实现中也应该有效。

相关内容

  • 没有找到相关文章

最新更新