Функция генератора доходности Python

#python #generator #yield #yield-return #yield-keyword

#python #генератор #выход #выход-возврат #yield-ключевое слово

Вопрос:

Итак, у меня есть этот огромный класс, из которого единственный релевантный код:

     def get_col_is_numeric(self, col_name):
        "Returns an iterator with each cell length in the named column"
        min(self.get_col_iter_is_numeric(col_name))
  

… и я загрузил некоторые значения в dict из файла csv.
Проблема в том, что csvDictReaderCol.get_col_is_numeric(‘Ann_payrll’) возвращает None
, даже если все значения в столбце являются числами.
Почему yield генерирует значение None?

Комментарии:

1. Используйте некоторые инструменты отладки. Если у вас нет отладчика, договоритесь, чтобы вы просто распечатали все локальные переменные, параметры и т. Д. всякий раз, когда вы сталкиваетесь yield None .

2. В чем разница между вашим классом и csv.DictReader … почему вы изобретаете велосипед?

3. @katrielalex Вы правы! Это то же самое. Хотя я думаю, что я использовал это с более ранней версией Python (я думаю, что до обновления это было 2.3), и cvs.DictReader в то время не был доступен в этой версии Python. Доступно использование Python 2.6 и cvs.DictReader.

Ответ №1:

в get_col_is_numeric отсутствует оператор return, поэтому он возвращает None .

Также в следующий раз попробуйте просто опубликовать фактические функции / методы, а не весь класс.