Если я проверяю типы types.GeneratorType
и text[0]
объекта генератора text[0]
каждый, оба возвращаются <class 'generator'>
. Однако, когда я использую isinstance()
, он возвращает False
. Что я делаю неправильно?
import types
import spacy
nlp = spacy.load('en')
text = [nlp(' '.join(docs)).sents]
print(types.GeneratorType)
Out[27]: <class 'generator'>
print(text)
Out[28]: [<generator object at 0x000001F4407F8950>]
print(type(text[0]))
Out[29]: <class 'generator'>
print(isinstance(text[0], types.GeneratorType))
Out[30]: False
Ваш код немного запутан, чтобы читать, потому что переменный text
- это список, содержащий объект-генератор. Но я думаю, что то, что вы видите здесь, сводится к довольно тонкому различию: разница между функциями генератора и генераторами в Python.
import types
import inspect
def generator_function():
for i in range(100):
yield i
generator = (i for i in range(100))
isinstance(generator_function, types.GeneratorType) # False
isinstance(generator, types.GeneratorType) # True
inspect.isgeneratorfunction(generator_function) # True
inspect.isgeneratorfunction(generator) # False
Свойство spaCy Doc.sents
- это функция-генератор, которая дает сроки предложения - см. здесь для реализации.