#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 .
Также в следующий раз попробуйте просто опубликовать фактические функции / методы, а не весь класс.