3

私はこの機能を持っています:

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コンソールで同じ機能を試しました-正常に動作する場合。

4

1 に答える 1

5

古いバージョンの 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 実装でも機能するはずです。

于 2012-03-09T18:04:34.573 に答える