Сбой экземпляра Python (obj, tpyes.GeneratorType)

1

Если я проверяю типы 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
Теги:
generator
spacy

1 ответ

1

Ваш код немного запутан, чтобы читать, потому что переменный 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 - это функция-генератор, которая дает сроки предложения - см. здесь для реализации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню