Удалось ли кому-нибудь использовать ключевое слово "yield" в скриптах jython для Grinder 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
- если работает нормально.1 ответ:
В старых версиях 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.