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

标签 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: ('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 实现中它也应该可以工作。

关于python - 有没有人在 Grinder 3 的 jython 脚本中成功使用 'yield' 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9638621/

相关文章:

python - 按单词长度过滤列表

python - 如何以适用于 py2 和 py3 的方式在 Python 中定义二进制字符串?

python - 从一个 python 文件在不同的终端/控制台中运行多个 python 文件

java - 如何在 python/jython 中执行此操作(用 java 编码)?

python - Pynotify 不工作 Jython

python - python 中有没有一种方法可以更改 yield from get 的处理顺序?

python - Matplotlib xlabel 绘图错误(IndexError : list index out of range)

python - 有人尝试过使用 WLST 实现集群自动化吗?

javascript - ES6 - 同时产量和返回

python - 为什么这个 python 生成器每次都返回相同的值?